博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javaScript面向对象编程-继承(二)
阅读量:6230 次
发布时间:2019-06-21

本文共 1813 字,大约阅读时间需要 6 分钟。

原型继承

原型继承是对类式继承的一种封装,其中的过渡对象就相当于类式继承中的子类,只是在原型式中作为一个过渡对象出现,目的是创建要返回的新的实例化对象。和类式继承一样,父类对象book中指类型的属性被复制,引用类型的属性被共有。

//原型是继承function inheritObject(o) {//声明一个过渡函数对象function F(){}//过渡对象的原型继承父类F.prototype = o;//返回过渡对象的一个实例,该实例的原型继承了父对象return new F();}var book ={name:"js",alikeBook:["css","html"]};//测试代码var newBook = inheritObject(book);newBook.name ="ajax";newBook.alikeBook.push("new xml book");var otherBook = inheritObject(book);otherBook.name ="flash";otherBook.alikeBook.push("other as book");console.log(newBook.name);//ajaxconsole.log(newBook.alikeBook);//[ 'css', 'html', 'new xml book', 'other as book' ]console.log(otherBook.name);//flashconsole.log(otherBook.alikeBook);//[ 'css', 'html', 'new xml book', 'other as book' ]console.log(book.name);//jsconsole.log(book.alikeBook);//[ 'css', 'html', 'new xml book', 'other as book' ]

寄生式继承

寄生式继承是对原型继承的第二次封装,并且在封装的过程中对继承对象进行了扩展,这样新创建的对象不仅仅有父类中的属性和方法,而且添加了新的属性和方法。

//寄生式继承var newBook = createBook(book);newBook.name = "js";newBook.alikeBook.push("new");var otherBook = createBook(book);otherBook.name = "bad";otherBook.alikeBook.push("other");//声明基对象var book = {name:'js book',alikeBook: ["css","html"]};function createBook(obj) {//通过原型继承方式创建新对象var o = new inheritObject(obj);o.getName = function () {console.log(name);}//返回拓展后的新对象return o;}//测试代码var newBook = createBook(book);newBook.name = "js";newBook.alikeBook.push("new");var otherBook = createBook(book);otherBook.name = "bad";otherBook.alikeBook.push("other");console.log(newBook.name);//ajaxconsole.log(newBook.alikeBook);//[ 'css', 'html', 'new xml book', 'other as book' ]console.log(otherBook.name);//flashconsole.log(otherBook.alikeBook);//[ 'css', 'html', 'new xml book', 'other as book' ]console.log(book.name);//jsconsole.log(book.alikeBook);//[ 'css', 'html', 'new xml book', 'other as book' ]

转载地址:http://jixna.baihongyu.com/

你可能感兴趣的文章
项目管理、测试管理、代码bug 管理
查看>>
SAP物料主档关键栏位解释
查看>>
Nim教程【十二】
查看>>
第 30 章 Shell Terminal
查看>>
Data Guard实现故障自动切换(二)(r11笔记第39天)
查看>>
[20171211]ora-16014 11g.txt
查看>>
oracle的正则表达式
查看>>
这几天的两件趣事
查看>>
小块头大作用 新型低成本测距传感器适用于无人机
查看>>
VSTO之旅系列(五):创建Outlook解决方案
查看>>
[erlang] mnesia
查看>>
php编码
查看>>
Java使用Socket传输文件遇到的问题(转)
查看>>
MYSQL-用户权限的验证过程(转)
查看>>
快递配送最后一公里的痛:利益失衡后开始崩塌
查看>>
深入理解Tomcat系列之一:系统架构(转)
查看>>
ArcMap打开越来越慢
查看>>
nagios客户端未启动报错
查看>>
Redux
查看>>
基于API调用的恶意软件分析技术
查看>>