js原生设计模式——2面向对象编程之继承—原型继承(类式继承的封装)
2015-11-04 17:11
337 查看
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>prototypeInherit</title>
<script type="text/javascript">
//原型式继承:实质上就是类式继承的函数封装(但有缺陷)
function inheritObject(obj){
//声明一个过渡函数对象
function _f(){}
_f.prototype = obj;
return new _f();
}
var book = {
name:'js book',
alike:['css','html']
}
var newbook = inheritObject(book);
newbook.name = 'ajax book';
console.log(newbook.name); //'ajax book'
newbook.alike.push('js');
console.log(newbook.alike); //["css", "html", "js"]
var combook = inheritObject(book);
console.log(combook.name); //'js book'
console.log(combook.alike); //["css", "html", "js"]newbook中修改加入的'js'元素,combook中也共享了
//小结:原型继承中——父对象的直接属性被分别拷贝,数组类结构属性会被共用。(推荐使用类式继承,继承的比较完美,每个实例都是独立对象,又都继承了父类的直接属性和原型prototype属性)
//本例已经通过验证
</script>
</head>
<body>
</body>
</html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>prototypeInherit</title>
<script type="text/javascript">
//原型式继承:实质上就是类式继承的函数封装(但有缺陷)
function inheritObject(obj){
//声明一个过渡函数对象
function _f(){}
_f.prototype = obj;
return new _f();
}
var book = {
name:'js book',
alike:['css','html']
}
var newbook = inheritObject(book);
newbook.name = 'ajax book';
console.log(newbook.name); //'ajax book'
newbook.alike.push('js');
console.log(newbook.alike); //["css", "html", "js"]
var combook = inheritObject(book);
console.log(combook.name); //'js book'
console.log(combook.alike); //["css", "html", "js"]newbook中修改加入的'js'元素,combook中也共享了
//小结:原型继承中——父对象的直接属性被分别拷贝,数组类结构属性会被共用。(推荐使用类式继承,继承的比较完美,每个实例都是独立对象,又都继承了父类的直接属性和原型prototype属性)
//本例已经通过验证
</script>
</head>
<body>
</body>
</html>
相关文章推荐
- Cas登录页面修改——jsp页面中文乱码
- js原生设计模式——2面向对象编程之继承—new+call(this)组合式继承
- js原生设计模式——2面向对象编程之继承—call(this)构造函数式继承
- js原生设计模式——2面向对象编程之继承—new类式继承
- js原生设计模式——2面向对象编程之js原生的链式调用
- js原生设计模式——2面向对象编程之闭包2
- js原生设计模式——2面向对象编程之闭包1
- JSON语法规则
- JS编写选择年份控件
- JS学习--用JS读取本地文件
- 【javascript高级程序设计笔记】第六章OOP
- JSP如何保存页面上众多的复选状态
- 关于url传值出现乱码的问题记录
- [js开源组件开发]localStorage-cache本地存储的缓存管理
- JS中document.createElement()的用法
- js实现可拉伸移动的div
- javascript设计模式-学习笔记
- Javascript模块化编程(三):require.js的用法
- js获取本月第几周和本年第几周
- javascript中 visibility和display的区别