浅析JS原型继承与类的继承
作者:bea
我们先看JS类的继承 <!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>JS类的继承</title></head><body> /* -- 类式继承 -- */ <script type="text/javascript"> //先声明一个超类 var Animal = functio
我们先看JS类的继承
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JS类的继承</title>
</head>
<body>
/* -- 类式继承 -- */
<script type="text/javascript">
//先声明一个超类
var Animal = function(name) {
this.name = name;
}
//给这个超类的原型对象上添加方法
Animal.prototype.Eat = function() {
console.log(this.name + " Eat");
};
//实例化这个超
var a = new Animal("Animal");
//再创建构造函数对象类
var Cat = function(name, sex) {
//这个类中要调用超类Animal的构造函数,并将参数name传给它
Animal.call(this, name);
this.sex = sex;
}
//这个子类的原型对象等于超类的实例
Cat.prototype = new Animal();
//因为子类的原型对象等于超类的实例,所以prototype.constructor这个方法也等于超类构造函数
console.log(Cat.prototype.constructor);
//这个是Animal超类的引用,所以要从新赋值为自己本身
Cat.prototype.constructor = Cat;
console.log(Cat.prototype.constructor);
//子类本身添加了getSex 方法
Cat.prototype.getSex = function() {
return this.sex;
}
//实例化这个子类
var _m = new Cat('cat', 'male');
//自身的方法
console.log(_m.getSex()); //male
//继承超类的方法
console.log(_m.Eat()); //cat
</script>
</body>
</html>
我们再看JS原型继承
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JS原型继承</title>
</head>
<body>
<!--原型继承-->
<script type="text/javascript">
//clone()函数用来创建新的类Person对象
var clone = function(obj) {
var _f = function() {};
//这句是原型式继承最核心的地方,函数的原型对象为对象字面量
_f.prototype = obj;
return new _f;
}
//先声明一个对象字面量
var Animal = {
somthing: 'apple',
eat: function() {
console.log("eat " + this.somthing);
}
}
//不需要定义一个Person的子类,只要执行一次克隆即可
var Cat = clone(Animal);
//可以直接获得Person提供的默认值,也可以添加或者修改属性和方法
console.log(Cat.eat());
Cat.somthing = 'orange';
console.log(Cat.eat());
//声明子类,执行一次克隆即可
var Someone = clone(Cat);
</script>
</body>
</html>
我们可以试验一下,JS类的继承 children.constructor==father 返回的是true,而原型继承children.constructor==father 返回的是false;
以上这篇浅析JS原型继承与类的继承就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
有用 | 无用
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JS类的继承</title>
</head>
<body>
/* -- 类式继承 -- */
<script type="text/javascript">
//先声明一个超类
var Animal = function(name) {
this.name = name;
}
//给这个超类的原型对象上添加方法
Animal.prototype.Eat = function() {
console.log(this.name + " Eat");
};
//实例化这个超
var a = new Animal("Animal");
//再创建构造函数对象类
var Cat = function(name, sex) {
//这个类中要调用超类Animal的构造函数,并将参数name传给它
Animal.call(this, name);
this.sex = sex;
}
//这个子类的原型对象等于超类的实例
Cat.prototype = new Animal();
//因为子类的原型对象等于超类的实例,所以prototype.constructor这个方法也等于超类构造函数
console.log(Cat.prototype.constructor);
//这个是Animal超类的引用,所以要从新赋值为自己本身
Cat.prototype.constructor = Cat;
console.log(Cat.prototype.constructor);
//子类本身添加了getSex 方法
Cat.prototype.getSex = function() {
return this.sex;
}
//实例化这个子类
var _m = new Cat('cat', 'male');
//自身的方法
console.log(_m.getSex()); //male
//继承超类的方法
console.log(_m.Eat()); //cat
</script>
</body>
</html>
我们再看JS原型继承
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JS原型继承</title>
</head>
<body>
<!--原型继承-->
<script type="text/javascript">
//clone()函数用来创建新的类Person对象
var clone = function(obj) {
var _f = function() {};
//这句是原型式继承最核心的地方,函数的原型对象为对象字面量
_f.prototype = obj;
return new _f;
}
//先声明一个对象字面量
var Animal = {
somthing: 'apple',
eat: function() {
console.log("eat " + this.somthing);
}
}
//不需要定义一个Person的子类,只要执行一次克隆即可
var Cat = clone(Animal);
//可以直接获得Person提供的默认值,也可以添加或者修改属性和方法
console.log(Cat.eat());
Cat.somthing = 'orange';
console.log(Cat.eat());
//声明子类,执行一次克隆即可
var Someone = clone(Cat);
</script>
</body>
</html>
我们可以试验一下,JS类的继承 children.constructor==father 返回的是true,而原型继承children.constructor==father 返回的是false;
以上这篇浅析JS原型继承与类的继承就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- JavaScript实现图片自动加载的瀑布流效果
- javascript冒泡排序小结
- javascript原生ajax写法分享
- Javascript实现苹果悬浮虚拟按钮
- jQuery实现点击水纹波动动画
- JavaScript数据绑定实现一个简单的 MVVM 库
- jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
- JavaScript代码实现左右上下自动晃动自动移动
- JS表单验证的代码(常用)
- JavaScript事件代理和委托详解
- JS实现的网页上的颜色拾色器
- javascript高级选择器querySelector和querySelectorAll全面解析
- 关于cookie的初识和运用(js和jq)
- 纯js实现瀑布流布局及ajax动态新增数据
- 原生JavaScript实现Ajax的方法
- JavaScript数据推送Comet技术详解
- js实现商品抛物线加入购物车特效
- js类式继承与原型式继承详解
- javascript原型继承工作原理和实例详解