精华内容
下载资源
问答
  • js原型链

    2021-04-01 21:05:10
    关于js原型链的知识: 所谓原型链其实就是指隐式原型对象(proto)的原型链; 任何函数的显式原型对象(prototype)都是Object的实例对象(除了Object函数); 实例对象的隐式原型对象(proto)等于其构造函数的显式...

    关于js原型链的知识:

    所谓原型链其实就是指隐式原型对象(proto)的原型链;
    任何函数的显式原型对象(prototype)都是Object的实例对象(除了Object函数);
    实例对象的隐式原型对象(proto)等于其构造函数的显式原型对象(prototype);
    所有函数都是Function的实例对象;
    Object的原型对象是原型链的尽头;

    展开全文
  • JS原型链

    2021-02-06 15:02:05
    JS原型链一、什么是原型链二、获取原型对象1.对象实例获取二、构造函数获取三、获取构造函数1.原型对象获取四、原型链五、原型链的操作一、查找属性 一、什么是原型链 在对象、构造函数、原型对象实例和原型对象的...

    一、什么是原型链

    在对象、构造函数、原型对象实例和原型对象的原型对象之间存在的一种关系

    二、获取原型对象

    1.对象实例获取

    var obj = []
    var b = obj.__proto__
    

    __proto__属性不是标准属性,尽量不要在开发中使用

    二、构造函数获取

    var  obj = []
    var c    = Array.prototype
    

    prototype就是函数获取原型对象的方式

    三、获取构造函数

    1.原型对象获取

    原型对象中有个constructor,它会指向构造函数

    var obj = {}
    var c  = obj.__proto__.constructor
    

    获取构造函数只能通过这个方式获取

    四、原型链

    var a = []
    var b =  a.__proto__
    var c = b.__proto__
    

    上述表达式中,先通过数组对象获取到属性的原型对象。这个原型对象其实也可以看作是一个对象实例,那么它就也有一个原型对象。再通过__proto__来获取这个原型对象实例的原型对象。再往上看,这个原型对象其实又可以看作是一个对象实例。所以它也有原型对象,最终的原型对象都是Object,而Object的原型对象是null,所以typeof null时返回的是object,但null其实不是引用类型,它是基本类型。
    这就构成了原型链。

    五、原型链的操作

    一、查找属性

    当点出一个对象实例的属性时,如果明知道这个对象实例是没有的。它就会找它的原型对象。还没有,就再往上找。知道找到为止,没有就会返回undefined。

    展开全文
  • Js原型链

    2019-03-26 22:23:41
  • Js 原型链

    2019-04-02 10:29:35
    Js 原型链 参考网址:Js 原型链 小测试检验js 原型链的理解: person1.__proto__ 是什么? Person.__proto__ 是什么? Person.prototype.__proto__ 是什么? Object.__proto__ 是什么? Object.prototype.__proto...

    Js 原型链

    参考网址:
    Js 原型链
    Web前端------JS原型、原型链详解

    网络上的经典图:

    自己绘制的图:

    Part 1

    小测试检验js 原型链的理解:

    1. person1.__proto__ 是什么?
    2. Person.__proto__ 是什么?
    3. Person.prototype.__proto__ 是什么?
    4. Object.__proto__ 是什么?
    5. Object.prototype.__proto__ 是什么?

    答案:
    第一题:
    因为person1.__proto__ === person1 的构造函数.prototype
    因为person1的构造函数 === Person
    所以person1.__proto__ === Person.prototype

    第二题:
    因为Person.__proto__ === Person的构造函数.prototype
    因为Person的构造函数 === Function
    所以Person.__proto__ === Function.prototype

    第三题:
    Person.prototype 是一个普通对象,我们无需关注它有哪些属性,只要记住它是一个普通对象。
    因为一个普通对象的构造函数 === Object
    所以 Person.prototype.__proto__ === Object.prototype

    第四题,参照第二题,因为 Person 和 Object 一样都是构造函数

    第五题:
    Object.prototype 对象也有proto属性,但它比较特殊,为 null 。因为 null 处于原型链的顶端,这个只能记住。
    Object.prototype.__proto__ === null

    Part 2

    在原型链上查找属性比较耗时,对性能有副作用,这在性能要求苛刻的情况下很重要。另外,试图访问不存在的属性时会遍历整个原型链。

    hasOwnProperty 是 JavaScript 中处理属性并且不会遍历原型链的方法之一。(另一种方法: Object.keys())

    prototypeObject.getPrototypeOf 的使用

    function A(){}
    A.prototype = {
    	doSomething: function(){
    		// ...
    	}
    }
    var a1 = new A();
    var a2 = new A();
    

    像上面的例子中, a1.doSomething 事实上会指向 Object.getPrototypeOf(a1).doSomething,它就是你在 A.prototype.doSomething 中定义的内容。

    也就是说:Object.getPrototypeOf(a1).doSomething == Object.getPrototypeOf(a2).doSomething == A.prototype.doSomething

    【补充:实际上当执行a1.doSomething() 相当于执行Object.getPrototypeOf(a1).doSomething.call(a1)==A.prototype.doSomething.call(a1)

    简而言之, prototype 是用于类的,而 Object.getPrototypeOf() 是用于实例的(instances),两者功能一致。

    (待补充)
    至此,结束。

    展开全文
  • js 原型链

    2021-04-19 17:37:25
    这个绕来绕去的线是不是很恶心呢?那就先别管这些了,等整个逻辑我们梳理完就... 这个操作被委托在整个原型链上,这个就是我们说的原型链了。 二、原型指针 我们知道了原型的概念,接下来我们就照着上面的图...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,516
精华内容 3,806
关键字:

js原型链