使用原型链可以
-
节省内存:使用原型链方法,类的方法和属性只需在原型对象上定义一次,所有实例共享同一个方法和属性的引用,不会在每个实例中重复存储,从而节省了内存空间。
-
动态性:原型链方法可以在实例化后动态修改,因为所有实例共享同一个方法的引用。这意味着如果你在原型上添加或修改了方法,所有实例都会立即反映这些变化。
-
继承和扩展:原型链方法允许类的实例继承父类原型上的方法,同时也方便在子类原型上添加新的方法来扩展功能。
-
更易于维护:将方法和属性统一定义在原型对象上,使代码结构更清晰,易于维护和理解。
-
如下:
-
function person(name){ this.name=name; } person.prototype.sayhello=function(){ console.log("hello") } let p1=new person() let p2=new person() console.log(p1.sayhello==p2.sayhello)//返回true
而采用构造函数添加的方法和变量是属于实例本身所以属于多次调用每次构建对象的时候单独创建的,所以返回的就是false了 如下:
-
function person(name){ this.name=name; this.sayhello=function(){ console.log("hello") } } let p1=new person() let p2=new person() console.log(p1.sayhello==p2.sayhello)//返回false
总的来说 原型链的方法属于类,构造函数的方法属于实例