JavaScript 原型对象

静态成员和实例成员

静态成员:构造函数的属性、方法
实例成员:实例的属性、方法
(静态成员只有构造函数可以访问,实例成员只有构造函数的实例可以访问)

原型对象

创建:创建函数的时候同时就会产生它的原型对象;

特性:
1.原型对象和构造函数是同时产生的,创建函数的时候就会产生一个相关联的原型对象;
2.原型对象上的属性和方法,实例是可以调用的;
3.原型对象上的方法中的this,指向调用方法的对象;

作用:为实例保存公用的方法、属性

原型对象、构造函数、实例的关系
构造函数访问原型对象:构造函数名.prototype;
构造函数创建实例: new 构造函数名();
实例访问原型对象:实例.__proto__;
原型对象访问构造函数:原型对象.constructor;

原型链

概念:以原型对象为顺序形成的链状结构;
作用:
实例调用成员时的规则:
1.先查找自身的方法;
2.自身没有,去原型对象上查找;
3.原型对象上没找到,去原型对象的原型对象上查找;

注意: 原型对象的方法中的this,指向调用该方法的对象;

call()方法

作用:函数调用的时候,修改函数中的this指向;call方法会直接调用函数
语法:函数名.call(目标对象,参数2,...)

功能:1.调用函数;
2.把函数中的this替换成目标对象;
注意:函数本身不会受影响,当不使用call的时候,函数中的this还是原来的指向

apply()方法

作用:和call相同,只是传参时以数组的形式传入;

bind()方法

语法:函数名.bind(目标对象,参数1,...)
规则:1.转化函数,将this指向目标对象,参数一次替换;
2.返回一个更改了this指向的新函数;

注意: 参数被指定后,后续调用传入的实参也不会改变参数的值;参数没有被指定,后续调用传入的实参会依次改变参数的值;

注意:
再这个例子中,fun调用时传入的实参是给b和c的,因为在定义fun函数的时候,已经将1传给了a;

function fn(a, b, c) {
            console.log(this);
            console.log(a + b + c);
        }
        var fun = fn.bind(this, 1);
        fun(2, 3);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值