美文网首页
面向对象&原型&原型链

面向对象&原型&原型链

作者: 陈陈_2140 | 来源:发表于2019-02-03 20:56 被阅读0次

    1、js对象就是系列key:value的组合,面向对象编程在大部分编程语言中都有所提及,其基本思想是将某个功能看成一个整体(对象)封装在一个对象变量中,通过调用对象的某个方法来启动功能,在用的时候不去考虑这个对象内部的具体实现细节,在实现对象细节的时候也不需去管谁在调用。

    2、可通过字面量、通过函数构造和new三种方法来构造一个对象,字面量方法每构造一个对象都需逐个对每个属性赋值,太过繁琐;使用函数构造对象代码如下:

    ```

    function createObj(nick,name){

    var obj = {

    nick:nick,

    name:name,

    printName:function(){console.log(this.nick)}

    }

    return obj

    }

    var obj2 = createObj('Byron',30)

    ```

    通过调用函数createObj将参数传递给对象之后return出来,并赋值给obj2,实现构造对象;

    使用new构造对象相比于上面构造函数则更加简单,思路基本相同,其代码如下:

    ```

    function Person(name){

    this.name = name

    this.sayName = function(){console.log(this.name)}

    }

    var p = new Person('hunger')

    ```

    执行过程中主要进行了如下操作:

    a、执行new Person时创建了一个空对象,其__proto__指向Person的原型prototype;

    b、传递参数 将括号中的参数逐个传递给空对象,该对象获取到函数Person的所有属性和值;

    c、该对象返回给p,实现对象p的构造。

    3、原型链三大金句:

    a、当new一个函数时会生成一个对象,该对象的__proto__指向构造函数的原型prototype;

    b、一起函数都是Function构造的,所以任何被构造函数f.__proto__ = Function.prototype;

    c、一切函数的原型对象prototype都是由Object构造的,因此任意原型对象.__proto__ = Object.prototype.

    相关文章

      网友评论

          本文标题:面向对象&原型&原型链

          本文链接:https://www.haomeiwen.com/subject/voyysqtx.html