////test
function Person(name){
this.name = name;
}
Person.prototype.name = 'proto' //设置原型对象的name属性
var person1 = new Person(); //创建实例person1
var person2 = new Person(); //创建实例person2
console.log(Person);// [Function: Person] 方法本身
console.log(Person.prototype.constructor) //[Function: Person] 构造函数Person原型对象的constructor属性
console.log(person1.__proto__); //Person { name: 'proto' } 实例person1的[[prototype]]
console.log(Person.prototype); //Person { name: 'proto' } 构造函数Person原型对象
console.log(Person === Person.prototype.constructor); //true 指向1
console.log(person1.__proto__ === Person.prototype);//true 指向2
console.log(person1.__proto__ === person2.__proto__); //true 无指向
console.log(Object.getPrototypeOf(person1) === Person.prototype) //true 构造函数Person的原型对象 和 实例person1的[[prototype]] (这个不知道这样描述正确不)
person1.__proto__.name = 'modify'; //通过实例的[[prototype]] 改变了person1实例[[prototype]]的name属性
console.log(Person.prototype.name); // modify
console.log(person2.__proto__.name); //modify
var person3 = new Person();
console.log(person3.__proto__.name) //modify
指向1:构造函数Person原型对象的constructor属性指向Person 这一个构造函数, 且2者全等。不能得出如果2个属性全等,则有指向,而书中指向是单向性,为什么?不清楚书中的指针的含义
问题1:
构造函数Person原型对象的constructor属性指向Person 这一个构造函数, 且2者全等。不能得出如果2个属性全等,则有指向,而书中指向是单向性,为什么?
指向2:构造函数person1的[[prototype]]指向Person构造函数的原型对象,在书中有写到 "虽然通过对象实例访问保存在原型的值,但却不能通过对象实例重写原型的值
问题2:
但是在后面输出3个modify中,很明显原构造函数原型的值可以被对象实例person1或者person2修改了,这是为什么??
PS:有没有什么推荐书可以理解与一下的~~~
通过实例的隐式原型__proto__是可以修改构造函数的原型对象(prototype)上的值,因为__proto__跟构造函数的原型对象(prototype)全等( __proto__指向 构造函数的原型对象prototype ),而且__proto__的指向可以被改变