原型与原型链

2018-11-30  本文已影响0人  Carlmac

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

实例化对象的 __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())了。

上一篇下一篇

猜你喜欢

热点阅读