深入理解js——原型的灵活性

时间:2021-07-01 16:08:11

在java中,class是一个模子,对象就是按照这个模子刻出来的;但是在JavaScript中对象可以刻成任意的样子。

首先,对象属性可以随时改动。对象或者函数,刚开始new出来之后,可能啥属性都没有。但是你可以这会儿加一个,过一会儿在加两个,非常灵活。

其次,如果继承的方法不合适,可以做出修改。

深入理解js——原型的灵活性

如上图,Object和Array的toString()方法不一样。肯定是Array.prototype.toString()方法做了修改。

同理,我也可以自定义一个函数,并自己去修改prototype.toString()方法。

funtion Foo(){}

var f1=new Foo();

Foo.prototype.toString=function(){

  return "小明";

}

console.log(f1.toString());//小明

最后,如果感觉当前缺少你要用的方法,可以自己去创建。

例如在json2.js源码中,为Date、String、Number、Boolean方法添加一个toJSON的属性。

深入理解js——原型的灵活性

如果你要添加内置方法的原型属性,最好做一步判断,如果该属性不存在,则添加。如果本来就存在,就没必要再添加了。