2.继承总结方法

**

## 继承

**
//ES6之前并没有给我们提供 extends 继承。我们可以通过构造函数+原型对象模拟实现继承,被称为组合继承。

2.1 call()

/* call方法:调用这个函数, 并且修改函数运行时的 this 指向
* fun.call(thisArg, arg1, arg2, …)
* thisArg :当前调用函数 this 的指向对象
* arg1,arg2:传递的其他参数
* */

function fn(x,y) {
console.log(‘我想喝手磨咖啡’);
console.log(this);//this指向函数的调用者
console.log(x+y);
};
var o = {
name : ‘andy’
}
//fn();

//1.call()可以调用函数
//fn.call();

//2.call()可以改变函数的指向
fn.call(o,1,2);

2.2 借用构造函数继承父类型属性
核心原理: 通过 call() 把父类型的 this 指向子类型的 this ,这样就可以实现子类型继承父类型的属性。

//1.父构造函数
function Father(name,age) {
//this指向的是父构造函数的对象实例
this.name = name;
this.age = age;
}
//2.子构造函数
function Son(name,age,score) {
//this指向的是子构造函数的对象实例
//使父构造函数中的this指向子构造函数中的this
Father.call(this,name,age);
//还可以添加自己的属性
this.score = score;
}
var son = new Son(‘刘德华’,22,99);
console.log(son)

//上述改变this指向问题可以使用断点解释其详细步骤:添加断点->刷新->点击下一步

Father实例对象与Father原型对象的内存空间不一样,所以Son的原型对象添加exam方法时,不会影响到Father原型对象

2.3 借用原型对象继承父类型方法
一般情况下,对象的方法都在构造函数的原型对象中设置,通过构造函数无法继承父类方法。
核心原理:

1. 将子类所共享的方法提取出来,让子类的 prototype 原型对象 = new 父类()
2. 本质:子类原型对象等于是实例化父类,因为父类实例化之后另外开辟空间,就不会影响原来父类原型对象
3. 将子类的 constructor 从新指向子类的构造函数

3. 类的本质

## 3. ES5 中的新增方法

3.2 数组方法
array.forEach(function(currentValue, index, arr))

array.filter(function(currentValue, index, arr))
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组 注意它直接返回一个新数组
array.some(function(currentValue, index, arr))
1. some() 方法用于检测数组中的元素是否满足指定条件. 通俗点 查找数组中是否有满足条件的元素
2. 注意它返回值是布尔值, 如果查找到这个元素, 就返回true , 如果查找不到就返回false.
3. 如果找到第一个满足条件的元素,则终止循环. 不在继续查找.

查询商品案例

1. 把数据渲染到页面中 (forEach)
2. 根据价格显示数据
3. 根据商品名称显示数据

界面如下:

注:forEach与some区别

**3.3 字符串方法**

trim() 方法会从一个字符串的两端删除空白字符。
语法:str.trim()
trim() 方法并不影响原字符串本身,它返回的是一个新的字符串。

**3.4 对象方法**

1. Object.keys() 用于获取对象自身所有的属性

2. Object.defineProperty() 定义对象中新属性或修改原有的属性。

语法:Object.defineProperty(obj, prop, descriptor)
- obj:必需。目标对象
- prop:必需。需定义或修改的属性的名字
- descriptor:必需。目标属性所拥有的特性
Object.defineProperty() 第三个参数 descriptor 说明: 以对象形式 { } 书写

- value: 设置属性的值 默认为undefined
- writable: 值是否可以重写。true | false 默认为false
- enumerable: 目标属性是否可以被枚举。true | false 默认为 false
- configurable: 目标属性是否可以被删除或是否可以再次修改特性 true | false 默认为false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值