怎样修改原型对象prototype

Posted aisowe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样修改原型对象prototype相关的知识,希望对你有一定的参考价值。

修改原型对象的方法分为两种情况, 一种是对原型对象的属性方法做增删改, 一种改变原型对象的指向.

 

第一种: 对原型对象的属性/方法做增删改

function Person(name){
    this.name = name;
}

var lilei = new Person("Lilei");

//
Person.prototype.getName = function (){
    return this.name;
}
lilei.getName(); // "Lilei"

//
Person.prototype.getName = function(){
    return this.name.toUpperCase();
}
lilei.getName(); // "LILEI"

//
delete Person.prototype.getName; // true
lilei.getName(); // Error

 

第二种: 改变原型对象的指向

以下代码中, 我们如果要整个改变原型对象的指向, 那目标对象中必须要有一个constructor属性, 值为这个原型对象关联的构造函数. 此外, 这个改变不能对已生产的实例对象作更改, 比如下面的lilei, 我们在修改以后调用lilei.sayHello()还是会报错.

function Person(name){
    this.name = name;
}

var lilei = new Person("Lilei");

var overridePrototype = {
    constructor: Person,
    sayHello: function(){
        return "Hello, I‘m " + this.name;
    }
};

// lilei.sayHello(); // Error

Person.prototype = overridePrototype ;
// lilei.sayHello(); // Error

var hanmeimei = new Person("Hanmeimei");
hanmeimei.sayHello(); // "Hello, I‘m Hanmeimei"

 

以上是关于怎样修改原型对象prototype的主要内容,如果未能解决你的问题,请参考以下文章

设计模式在游戏中的应用--原型模式

原型对象上的修改方式

设计模式之原型模式(Prototype)详解及代码示例

JS----构造函数与原型prototype 区别

javascript的构造函数和实例对象prototype和__proto__的区别,原型对象及构造器的理解

java设计模式-原型(prototype)