面向对象&原型&原型链

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.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容