js构造函数内的方法和构造函数protoType属性上的方法的对比

区别1:定义在构造函数内部的方法,会在它的每一个实例上都克隆这个方法;定义在构造函数的 prototype 属性上的方法会让它的所有示例都共享这个方法,但是不会在每个实例的内部重新定义这个方法 

区别2:如果是在函数的prototype属性上定义方法的话,要牢记一点,如果你改变这个方法,那么由这个构造函数产生的所有对象的那个方法都会被改变

区别3:关于对象序列化的问题:定义在函数的prototype上的属性不会被序列化

function A(name) {
    this.name = name;
}
A.prototype.sayWhat = 'say what...';


var a = new A('dreamapple');
console.log(JSON.stringify(a));

猜你喜欢

转载自blog.csdn.net/weixin_38098192/article/details/80582352