面向对象&原型&原型链

2019-02-03  本文已影响0人  陈陈_2140

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.

上一篇下一篇

猜你喜欢

热点阅读