javascript - js动态原型模式使用对象字面量报错

查看:126
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆