js 中继承常用的几种方法

继承
  1. 继承: 就是指 一个对象 有权 去访问 另一个对象的成员属性
作用是实现代码的复用
  1. 继承的方式:只要能实现一个对象 有权访问另一个对象成员 的 方式 都可以成为是 实现继承的方式
 
3 .继承是对象与对象之间的关系
 
4.原型的方法就是给继承使用的
#### 继承的实现方式 4种方法
 
① 扩展原有的原型
 
function Parent(name,age){
this.name=name;
this.age=age;
}
 
function Child(){
 
}
 
var p=new Parent('小红',19);
Child.prototype.name=p.name; (p.name==p.__proto__.name)
Child.prototype.age=p.age;
var c=new Child();
console.log(c.name);
console.log(c.age);
 
c可以访问p的成员属性
 
   ② 替换原型 (也叫组合继承常用方法)
 
 
function Parent(name, age) {
this.name = name;
this.age = age;
}
 
function Child() {
 
}
 
var p = new Parent('小红', 19);
Child.prototype = p;
 
var c = new Child();
 
console.log(c.name);
console.log(c.age);
 
 
 
 
 ③混入式(最常用唉):将要被继承 的对象成员 拷贝一份,添加到 继承对象
var grandpa = {
color: '#fff
'};
 
var parent = {
name: '小绿', age: 20
};
 
var child = {
gender: '女'
};
 
混入式:
for(var i in parent){
child[i] = parent[i];
}
 
for(var i in grandpa){
child[i] = grandpa[i];
}
console.log(child.grand);
 
child继承了 grandpa parent 这两个对象的成员属性
 
下边不会封装要知道上边的!!
上边代码有点冗余,可以封装:
 
var grandpa = {color: '#fff'};
var parent = {name: '小绿', age: 20};
var child = {gender: '女'};
 
child.extend = function() {
var k, // 枚举对象属性
i = 0,
obj; // 缓存当前arguments的实参对象
// 遍历arguments中的所有实参
for(; i < arguments.length; i++){
obj = arguments[i];
// 枚举当前遍历到的实参对象属性
for(k in obj){
// 将属性添加到this上
this[k] = obj[k];
}
}
};
child.extend(grandpa, paredt);
 
④ 对象冒充的方法:
 
function parent(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
 
function Child(name, age, sex, phone, address) {
this.add = parent;
this.add(name, age, sex); //调用
delete this.add; //清除内存
 
this.phone = phone;
this.address = address;
}
 
var c = new Child('小白', 18, '男', '1381235221', '北京')
console.log(c);
 
 
 
 
了解就行
es5 新增的方法 object.creat('继承的父级元素' , '给child新添加的属性'):实现原型链的继承;
 
var parent = {name: 'tom'};
var child = Object.create(parent, {age :{
value: 18,
writable: false,
configurable: true
}});
 
 

posted on 2017-06-20 18:55  村长有点忙  阅读(108)  评论(0编辑  收藏  举报

导航