您的当前位置:首页正文

js原型链的优缺点

2024-07-17 来源:好兔宠物网

1、优点是非常纯粹的继承关系,实例是子类的实例,也是父类的实例。子类可以访问父类新的原型方法和属性。

2、缺点是替换原型后需要重写方法。不能用对象字面量创建原型方法。

无法实现多继承。所有实例共享引用类型。

实例

function Person(){
}
Person.prototype.name = 'Jason';
Person.prototype.getYear = function(){
return 1989;
}
 
let person = new Person();
console.log(person.__proto__ === Person.prototype) //true

以上就是js原型链的优缺点,希望对大家有所帮助。更多js学习指路:

推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。

好兔宠物网还为您提供以下相关内容希望对您有帮助:

javascript原型,原型链 有什么特点

javascript原型,原型链特点:原型链实现了继承。JS中每个函数都存在有一个原型对象属性prototype。并且所有函数的默认原型都是Object的实例。每个继承父函数的子函数的对象都包含一个内部属性proto。该属性包含一个指针,指向父函数的prototype。若父函数的原型对象的_proto_属性为再上一层函数。在此过程中就...

JS类的创建与继承

缺点: 1.因为同时使用了原型链继承和构造继承,很明显可以看出父类实例的属性被调用了两次,浪费内存         创建一个函数传入要继承的父对象,内部创建空的子类函数,然后在子类函数外部将父对象赋值给子类函数的原型,再返回子类函数的new执行结果。

js原型链和继承的理解

2.在使用原型继承时 不能使用字面量 构造函数.prototype={} 的方式重写原型对象 。因为会导致该原型对象的constructor属性被重写,在生成的实例中导致constructor指向Object并且会切断之前原型对象的联系,破坏原型链。3.JavaScript 主要通过原型链实现继承。原型链的构建是通过将一个类型的实例赋值给另一个构...

原型链介绍

对象访问原型链中的成员采用就近原则 1.如果自己本身有就去自己的,如果自己没有就从原型中找,如果原型中也没有就从原型的原型中找,一次类推知道找到原型链的终点null,如果还没有找到是属性就返回undefined , 如果是方法就返回xxx is not a function.js中的对象都是由构造函数创建的 1.自定义构...

深入分析JS原型链以及为什么不能在原型链上使

在以下第二部份解释JS原型链的深层原理之前,先来明确一个概念:原型链上的属性或方法都是被实例化对象共用的,正因如此,上面的Tom.ability.run='50米/10秒',改动了原型连上的ability才导致另一个对象Merry受影响,既然如此,你可能会问Tom.ability = {...}不也是改动了原型链上的ability吗,为...

js中什么是原型对象和原型链

每个 JavaScript 对象内部都有一个指向其它对象的“指针”或者 “引用“, 并通过这种方式在对象之间建立了一种联系,形成了一种链式结构,我的理解这就是所谓的原型链。function F() {} // F 是一个函数,函数也是对象,而且每个函数都有一个属性叫:"prototype"var o = new F(); // F....

什么是原型链,它们的区别,在js中它们具体指什么

原型链是针对构造函数的,比如我先创建了一个函数,然后通过一个变量new了这个函数,那么这个被new出来的函数就会继承创建出来的那个函数的属性,然后如果我访问new出来的这个函数的某个属性,但是我并没有在这个new出来的函数中定义这个变量,那么它就会往上(向创建出它的函数中)查找,这个查找的过程...

原型跟原型链区别是什么?有大神可以解释一下吗?请不要百度复制粘贴过来...

arr.map === Array.prototype.map //arr.map是从arr.__proto__上继承下来的,arr.__proto__也就是Array.prototype 图形化原型链 虽然我们都说原型链,但实际上,在不考虑网页中frame的情况,js引擎在执行期间的某一时刻,所有存在的对象组成的是一棵原型树.默认情况下,只有一棵树.根节点可以说是...

js prototype是什么

prototype是一个属性,所有的函数都有,这个属性引用了一个对象,即原型对象,简称原型。所以大多数把prototype之间叫原型。通过原型可以实现方法或者属性扩充 比如 function A(){}A.prototype.show=function(){//扩充函数A的方法show alert('1');}实现原型链方式的继承。function B(x,y){ this.y...

JS面向对象三大特征:封装、继承、多态

3.组合继承 使用原型链实现对原型对象属性和方法的继承,借用构造函数实现对实例属性方法的继承 这样既通过在原型上定义方法实现了函数复用,又能保证每个实例都有自己的属性 4.寄生式继承 寄生式继承是与原型式继承紧密相关的一种思路,它创造一个仅用于封装继承过程的函数,在函数内部以某种方式...