js 面向对象部分内容

    最近在做关于js的面向对象的编程题目,但是感觉思维混乱,无从下手,于是总结一些从书上看到的内容,理理思绪。

    prototype

每一个函数都包含一个prototype属性,它指向了一个对象的应用,这个对象称为原型对象。每一个函数都包含不同的原型对象。当将函数用作构造函数的时候,新创建的对象会从原型对象上继承属性。

    call()和apply()

我们可以将这两种方法看成是某个对象的方法,通过调用方法的形式来间接调用函数。这两个方法的第一个实参是要调用函数的母对象,它是调用上下文,在函数体内通过this来获得对他的引用。要想以对象A的方法来调用函数 f() 可以这样使用:

        f.call(A);

        f.apply(A);

在ECMAScript 5的严格模式中这两个方法的第一个实参都会变成this的值,那怕传入的实参是原始值,甚至null或者undefined。在非严格模式中,传入的null或者undefined都会被全局对象代替,而其他原始值则会被相应的包装对象所代替。

而call方法在第一个实参后所有的参数z都是要传入呆调用函数的值

而apply方法会把这些值全部放入一个数组中。

    bind()

是在ECMAScript 5中新增的方法,主要作用就是将函数绑定至某个对象。当在函数F()上调用bind()方法并传入一个对象做参数,这个方法会返回一个新的函数。当以函数调用的方式调用新函数将会把原始的函数F()当做对象的方法来调用传入新函数的任何实参都将传入原始函数。

    使用new方法调用构造函数生成实例时,new的工作流程大概如下:

1.分配一个新的空对象.

2.设置新对象的相关属性、方法,例如继承Robot.prototype上的各式方法、属性。注意,这里执行的并不是拷贝,而是类似于引用的方法,称为代理(比如Robot.prototype对象的属性发生变化时,由Robot生成的实例对象直接继承的相应属性也会变化)。

3.将这个新对象作为构造函数的执行上下文(其this引用指向这个新的对象),并执行构造函数.

4.返回这个对象到执行new Robot("bower")的位置,赋值给前面的变量名.

    创建的构造函数,函数名第一个字母一定要大写,本菜在瞎编的时候由于没有大写耽误不少时间

 

总体来说是:

1.待处理的对象分类

2.分别建立构造函数

3.分别建立原型方法

4.调用方法获得结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值