js继承~[[9]]
来源:互联网 发布:淘宝粉丝福利购入口 编辑:程序博客网 时间:2024/05/21 17:56
js的继承 js咋继承?
任务:
/* 任务1:原型继承链, 继承腾讯面试题js两条狗,一开始"汪汪"的叫后台变异:变成"呜呜"通过继承达到目的*/
首先创造对象:
function tiger(){this.bark=function(){alert('百兽之王');}}var hu = new tiger();hu.bark;
/*在jsva中应该然tiger继承猫类,但是js做不到如何让老虎有猫的属性呢?*/***对tiger函数说 , 用cat猫对象来为原型 然后老虎就有猫的功能。再创建一个: 为了让老虎会爬树,搞一个猫的对象 --- 照猫画虎 // 原型就是 原来要继承的东东
function cat(){this.climb = function(){alert('会爬树');}}var bosimo = new cat();hu.bark(); // 老虎叫一下bosimo.climb(); //猫爬树 但是 hu.clibm() 会报错, 因为还没有继承, 老虎爬不了树
怎么继承:?
proto => 原型;样机;典型
tiger.prototype = new cat(); // 继承了var dbhu = new tiger(); // 创建新老虎dbhu.climb(); // 会爬树了console.log(dbhu); __proto__ 这个原型对象指向了cat猫
发生了什么?1. 构造新对象dbhu{}2. dbhu.bark = function(){}3. dbhu.__proto__ = tiger.prototype /***关键
那么, 猫的原型是谁呢?
以前的老虎的原型是谁?
原型,原型,原型l.....是谁? 但凡是个对象就会有原型:
console.log(cat.prototype);
construct 构造函数
console.log(cat.prototype.constructor);
各种找
console.log(cat.prototype); // 空对象, 显示为catconsole.log(cat.prototype.constructor); // 因为原型对象是constructor指向的cat, 所以显示为catconsole.log(cat.prototype.__proto__); // 空对象 Objectconsole.log(cat.prototype.__proto__.__proto__); // 为null
对象-->原型-->原型的原型-->Object对象-->NULL
最后 让一个猪会爬树:
Object.prototype.sing=function(){alert('会爬树');}function pig(){this.eat = '12KG';}var p = new pig();pig.sing();
最上面的面试题:
<script> function Dog(){this.bark = function(){alert('往往');}}function peter(){this.fire = function(){alert('第一斗犬');}}// 原型继承peter.prototype = new Dog();var huzi = new peter();huzi.bark();function byDog(){this.eat = function(){alert('会吃,会吹');}}byDog.prototype = new Dog();byDog.prototype.bark = function (){alert('呜呜呜')} // 改变了prototype的属性var by = new byDog();by.bark();</script>
除了原型继承还有其他的办法:
如:原型冒充,或者赋值继承
原型冒充:
function Cat(leg,tail){this.leg = leg;this.tail = tail;this.cilmb = function(){alert('我会爬树');}}function Tiger(leg,tail,color){// 把要继承的类的语句拿来执行一边// this.parent = Cat; // 把父类构造函数引入到parent属性上this.parent.apply(this,arguments) // 执行一边delete this.parent;this.color = color;}var tiger = new Tiger(4,1,'yellow');console.log(tiger);tiger.cilmb();/* 用tigger造对象时,用tigger的语句影响一个空对象{}tigger影响空对象前,先用cat函数使之一下娘因此,最后是由tigger和cat两者共同作用过的对象*/
复制继承:
<script> /*就是把父对象的属性,直接复制到自己的对象上*/function Cat(leg,tail){this.leg = leg;this.tail = tail;this.climb = function(){alert('爬树');}}function Tiger(color){this.color = color;this.extend = function(parent){for(var k in parent){// console.log(k);this[k] = parent[k];}}}var hu = new Tiger('color');// hu.climb(); 报错hu.extend(new Cat(4,1)); // 动态改变hu.climb(); // 然后就会了console.log(hu);</script>
0 0
- js继承~[[9]]
- JS继承--组合继承
- JS继承-类继承
- Js继承。
- js继承
- js继承
- js 继承
- js继承
- JS 继承
- JS 继承
- js继承
- js继承
- JS继承
- JS继承
- js继承
- JS继承
- JS继承
- js继承
- iOS:系统字体名称,经常用到
- fdnzdmgm
- 分享到美能达这方面大明宫
- song bao hua blog
- 三种常用的js数组去重方法
- js继承~[[9]]
- java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class com.
- TCP、UDP、SOCKET编程
- 初识全文索引
- eclipse上查看hadoop源码
- python域名是org结尾,切记!
- 海盗分金问题
- Android CTS测试修改测试结果和调试方法
- android编程之代码布局