原型与原型链

关于原型和原型链,只要牢记一件事就很容易理解:

实例化对象的 __proto__ 指向构造函数的 prototype

配合下面的例子和图示食用:

// 这是构造函数
function Person(nick, age) {
    this.nick = nick;
    this.age = age;
}

// 在构造函数的prototype上定义方法
Person.prototype.sayName = function() {
    console.log(this.nick);
}

// 创建两个实例
var p1 = new Person('Byron', 20);
var p2 = new Person('Casper', 25);

// 以下方法没有在实例上声明,但仍然可以正确调用
p1.sayName();  // 'Byron'
p2.sayName();  // 'Casper'
prototype.png

再记住另一句话:

因为JS中一切都是对象,所以最终所有对象的源头都指向Object.prototype

这就解释了为什么很多变量都有公用的方法(如:toString()valueOf())了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容