原型,原型链,call/apply(2)

            Person.prototype.name = "abc";
			function Person(){
				//var this = {
				//	__proto__: Person.prototype
				//}
			}
			var person = new Person();

当你访问这个对象的属性的时候,对象身上如果没有属性的话,他就会通过_proto_指向的索引,找Person.prototype身上有没有你想要找的属性。把原型和自己连接在一起。每个对象都有_proto_属性指向他的原型。

            Person.prototype.name = "abc";
			function Person(){
				//var this = {
				//	__proto__ : Person.prototype
				//}
			}
			var obj = {
				name : "sunny"
			}
			var person = new Person();

Person的构造函数构造出的对象的原型未必非得是Person.prototype,它是可以被经过修改的。

Person.prototype.name = "sunny";
			function Person(){
				
			}
			var person = new Person();
			Person.prototype.name = "cherry";

person.name她身上没有,没有得找__proto__,他的__proto__是Person.prototype。

Person.prototype.name = "sunny";
			function Person(){
				
			}
			Person.prototype.name = "cherry";
			var person = new Person();

Person.prototype.name = "sunny";
			function Person(){
				
			}
			var person = new Person();
			Person.prototype = {
				name : "cherry"
			}

这种写法和.的写法可不一样,.的写法是在原有的基础上把那个属性值改了,这种写法是把原型给改了,换了个新对象。

Person.prototype.name = "sunny";
			function Person(){
				
			}
			Person.prototype = {
				name : "cherry"
			}
			var person = new Person();

放上放下是绝对不一样的,一定要看清new的位置。

 

猜你喜欢

转载自blog.csdn.net/hdq1745/article/details/81809321