摘要:
function Foo(name) { this.name = name; } Foo.prototype.myName = function () { return this.name; } var a = new Foo('a'); a.myName(); // 'a' JS 中太多模拟类的行 阅读全文
摘要:
function Foo(name) { this.name = name; } Foo.prototype.myName = function () { return this.name; } var a = new Foo('a'); var b = new Foo('b'); a.myName 阅读全文
摘要:
function Foo() { // ... } var a = new Foo(); 是什么让我们认为 Foo 是一个类,Foo() 是构造函数调用。其中一个原因是我们看到了关键字 new。 除了令人迷惑的构造函数语义外,Foo.prototype 还有另一个绝招 function Foo() 阅读全文
摘要:
在 JS 中,我们并不会将一个对象(类)复制到另一个对象(实例),只是将它们关联起来,[[Prototype]] 机制如下图所示 这个机制通常被称为 原型继承,这个名称主要是为了对应面向类的世界中继承的意义,但是推翻了动态脚本中对应的语义 继承这个词会让人产生非常强的心理预期。仅仅在前面加个原型并不 阅读全文
摘要:
JS 中有一个奇怪的行为一直被无耻的滥用,那就是模仿类。这种行为利用了函数的一种特殊特性:所有的函数默认都会拥有一个名为 prototype 的公有并且不可枚举的属性 function Foo() { // ... } Foo.prototype; // {} Foo.prototype 会指向一个 阅读全文
摘要:
哪里是 [[Prototype]] 的尽头呢?所有普通的 [[Prototype]] 链最终都会指向内置的 Object.prototype。它包含了 JS 许多通用的功能,比如 .toString() .valueOf() .hasOwnProperty() .isPrototypeOf() 给一 阅读全文
摘要:
JS中的对象有一个特殊的 [[Prototype]] 内置属性,其实就是对于其他对象的引用。几乎所有的对象在创建时,[[Prototype]] 属性都会被赋予一个非空的值。 var myObject = { a:2 } myObject.a; [[Prototype]] 引用有什么用呢?比如当你试图 阅读全文
摘要:
① 什么是类,描述了一种代码的组织结构,一种在软件中对真实世界中问题领域的建模方法 ② // 非常简单的 mixin() 例子 function mixin(sourceObj, targetObj) { for (var key in sourceObj) { // 只会在不存在的情况下复制 if 阅读全文
摘要:
var Something = { cool: function () { this.greeting = 'Hello World'; this.count = this.count ? this.count + 1 : 1; } } Something.cool(); Something.gre 阅读全文
摘要:
JS 的对象机制并不会自动执行复制行为,由于其他语言中表现出来的复制行为,因此 JS 开发者也想出了一个方式来模拟类的复制行为,这个方法就是混入。我们先看第一种,显式混入。 // 非常简单的 mixin() 例子 function mixin(sourceObj, targetObj) { for 阅读全文