javascript - js动态原型模式使用对象字面量报错
本文介绍了javascript - js动态原型模式使用对象字面量报错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
// 动态原型模式「
function Person(name,age){
this.name=name;
this.age=age;
if(typeof this.load!='function'){
Person.prototype={
constructor:Person,
job:'vip',
load:function(){
console.log(name,age);
}
}
}
}
var toti=new Person('toti',18);
toti.load();
// 」动态原型模式
网上查的答案都无法让我很满意,没有答到点子上,希望有大神解惑。
我希望了解到使用对象字面量报错的原理,是因为什么,求详细解答!
解决方案
假设有一个构造函数:
function CO(){
this.p = I’m in constructed object;
this.alertP = function(){
alert(this.p);
}
}
var o2 = newCO();
那么,在使用new操作符来调用一个构造函数的时候,发生了什么呢?其实很简单,就发生了四件事:
var obj ={};
obj.__proto__ = CO.prototype;
CO.call(obj);
return obj;
所以再看你的例子,可以看出_proto_的设置是先于你的设置动态原型(prototype)的语句执行的,并且重新设置的原型不会影响到已经创建的对象。
ps:参考自网上。
这篇关于javascript - js动态原型模式使用对象字面量报错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文