//js继承的实现方式
//定义一个父类
function Animal(name){//属性this.name=name||'Animal';//实例方法this.sleep=function(){console.log(this.name+'正在睡觉');}
}
//原型方法
Animal.prototype.eat=function(food){console.log(this.name+'正在吃:'+food);
}//1.原型继承
//核心:将父类的实例作为子类的原型
function Cat(){}
Cat.prototype=new Animal();
Cat.prototype.name='cat'
//test code
var cat=new Cat();
console.log(cat.name);
console.log(cat.eat('fish'));
console.log(cat.sleep());//2.构造函数继承
//核心:使用父类的构造函数来增强子类实例,等于是复制父类的实例属性给子类(没有用到原型)
function Cat(name){Animal.call(this);this.name=name||'Tom';
}
//test code
var cat=new Cat();
console.log(cat.name);
console.log(cat.sleep());
//3.组合继承
//核心:通过调用父类构造,继承父类的属性并保留传参的优点,然后将父类实例作为子类的原型,实现函数复用
function Cat(name){Animal.call(this);this.name=name||'Tom'
}
cat.prototype=new Animal;
Cat.prototype.constructor=Cat;
//Test code
var cat=new Cat();
console.log(cat.name);
console.log(cat.sleep());
console.log(cat.eat('mimi'));var book={"title":"professional Javascript","authors":["Nicholas C.Zakes"],edition:3,year:2011,releaseDate:new Date(2018,07,10)
}var jsonText=JSON.stringify(book)console.log(jsonText);var bookCopy=JSON.parse(jsonText,function(key,value){if(key=="releaseDate"){return new Date(value);}else{return value;}
})console.log(bookCopy);//快速排序
function quickSort(arr){if(arr.length<=1){return arr;}var indexPov=Math.floor(arr.length/2);var povit=arr.splice(indexPov,1)[0];var left=[];var rigth=[];for(var i=0;i<arr.length;i++){if(arr[i]<povit){left.push(arr[i]);}else{rigth.push(arr[i]);}}  return quickSort(left).concat([povit],quickSort(rigth))}
arr=[85,23,45,12,35,67,99,10,232]
console.log(quickSort(arr));function serilizeUrl(url){var urlObject={};if(/\?/.test(url)){var urlString=url.split('?')[1];// var urlString=url.substring(url.indexOf("?")+1)var urlArray=urlString.split("&");for(var i=0,len=urlArray.length;i<len;i++){var urlItem=urlArray[i];var item=urlItem.split('=');urlObject[item[0]]=item[1];}return urlObject;}}var url='http://item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e'
console.log(serilizeUrl(url));if(!String.prototype.trim){String.prototype.trim=function(){return this.replace(/^\s+/,'').replace(/\s+$/,'');}
}var str='\t\n test string'.trim();
console.log(str);var str2='asdfssaaasasasasaa';
var json={};
for(var i=0;i<str2.length;i++){if(!json[str2.charAt(i)]){json[str2.charAt(i)]=1;}else{json[str2.charAt(i)]++}
};
var iMax=0;
var iIndex='';
for(var i in json){if(json[i]>iMax){iMax=json[i];inldex=i;}
}
console.log(inldex+'的次数是'+iMax);var str2=12345678
function re(str){str+='';return str.split('').reverse().join('');
}
// console.log(re(str2));
function toRMB(num){var temp='';for(var i=1;i<re(num).length;i++){temp+=re(num)[i-1];if(i%3==0&&i!=re(num).length){temp+=','}}return re(temp)
}console.log(toRMB(str2));//生成5个不同的随机数console.log(Math.floor(Math.random()*10)+1);
var num1=[];
for(var i=0;i<5;i++){num1[i]=Math.floor(Math.random()*10)+1;for(var j=0;j<i;j++){if(num1[i]==num1[j]){i--}}
}
for(var i=0;i<num1.length;i++){console.log('=='+num1[i]);}//阶乘函数
function fn(){}
console.log(typeof fn.__proto__);
console.log(typeof fn.prototype);
function A(){}
var B=new A();
console.log(A.prototype);
console.log(B.__proto__);function f1(){var temp=1;this.x=3;console.log(temp);console.log(this.x);return 2}
var obj=new f1();
console.log(obj.x);
console.log(f1());var reg=/^[a-zA-Z_0-9][a-zA-ssdZ0-9_]{5,20}/
console.log(reg.test('0leipem'));function Parent(name,money){this.name=name;this.money=money;this.info=function(){console.log('姓名:'+this.name+'钱'+this.money);}
}//定义子类
function Child(name){Parent.call(this,name)this.info=function(){console.log('姓名:'+this.name);}
}//实例化
var per=new Parent('func',900)
var chi=new Child('jdjdw')
per.info()
chi.info()

JavaScript继承练习相关推荐

  1. JavaScript继承详解(四)

    文章截图 - 更好的排版 在本章中,我们将分析Douglas Crockford关于JavaScript继承的一个实现 - Classical Inheritance in JavaScript. C ...

  2. JavaScript继承详解(四) 转

    在本章中,我们将分析Douglas Crockford关于JavaScript继承的一个实现 - Classical Inheritance in JavaScript. Crockford是Java ...

  3. Javascript继承机制的设计思想

    我一直很难理解Javascript语言的继承机制. 它没有"子类"和"父类"的概念,也没有"类"(class)和"实例" ...

  4. 浅谈JavaScript继承

    前言 关于JavaScript继承相关的定义和方法网上已经有很多解释啦,本菜鸟就不抄抄写写惹人嫌了,本文主要探讨三种基本的继承方式并且给出优化方案. 正文 借助构造函数实现继承 function Pa ...

  5. 浅谈javascript继承【读javascript设计模式第四章节继承有感】

    javascript继承,无任是类式继承,原型式继承还是渗元式继承都是通过不同方法去围绕着prototype转,简单分析下三种不同继承方法是如何围绕prototype转的 一:类似继承,先上关键代码 ...

  6. 理解JavaScript继承(二)

    理解JavaScript继承(二) 5.寄生式继承 function object(o) {function F() {} F.prototype = o; return new F(); }func ...

  7. 探寻完美 之 JavaScript继承

    本文并不想探讨JavaScript的面向对象特性(如果有兴趣,可参看我的<领悟面向对象JavaScript>),也不会涉及全部的面向对象概念,只是试图寻找一个还未被任何人发现的" ...

  8. 【JavaScript】重温Javascript继承机制

    上段时间,团队内部有过好几次给力的分享,这里对西风师傅分享的继承机制稍作整理一下,适当加了些口语化的描述,留作备案. 一.讲个故事吧 澄清在先,Java和Javascript是雷锋和雷峰塔的关系.Ja ...

  9. [转]JavaScript继承详解

    原文地址:http://www.cnblogs.com/sanshi/archive/2009/07/08/1519036.html 面向对象与基于对象 几乎每个开发人员都有面向对象语言(比如C++. ...

  10. 重温Javascript继承机制

    上段时间,团队内部有过好几次给力的分享,这里对西风师傅分享的继承机制稍作整理一下,适当加了些口语化的描述,留作备案. 一.讲个故事吧 澄清在先,Java和Javascript是雷锋和雷峰塔的关系.Ja ...

最新文章

  1. java 注解 权限_java 使用注解 处理权限(springboot)
  2. 十个习惯让你精通新的开发技术
  3. Apollo技能图谱2.0焕新发布 更新7大能力91个知识点
  4. LeetCode 722. CPP删除注释(逻辑题)
  5. 在错误的数据上,刷到 SOTA 又有什么意义?
  6. Service Mesh微服务熔断、限流的骚操作
  7. Maven : [ERROR] Project xxx is duplicated in the reactor @
  8. matlab怎么画二维热力图_Tableau画日历热力图
  9. (转)大公司里怎样开发和部署前端代码?
  10. linux ape,linux把ape+cue格式转换成flac,同时保留曲目信息转载
  11. arduino的矩阵示例程序_用树莓派 Arduino 制造 LED 矩阵彩灯
  12. mui.ajax中文乱码
  13. LINUX出错解决办法:无法定位软件包 libX11-dev
  14. thinkphp 文件下载实例 实现以及注意事项
  15. mysql管理工具_15款最佳的MySQL管理工具和应用程序
  16. Windows系统(tips)
  17. python自动玩2048
  18. oracle的日期时间转换日期,oracle 的时间日期转换函数
  19. 苹果账户登录_开心,安卓手机支持和iPhone内APP账户互通
  20. QT中将文件夹内文件名称显示到tableview,对显示的文件名双击直接打开文件

热门文章

  1. wifi信号放大器除了易拉罐,还有免费wifi软件
  2. 1、Linux基础简介
  3. 软件测试工程师的一次思考
  4. 从剧情架构角度分析《妄想破绽》
  5. 计算机科学期刊论文格式,计算机科学期刊投稿论文模板
  6. 网页制作怎么入服务器,网站后台是怎么做的 如何进入网站后台
  7. zuk android系统耗电高,联想ZUK手机出现大规模卡顿耗电问题 解决办法让人忍俊不禁...
  8. R语言:三线表(2)
  9. IMU、角速度、线速度校正
  10. Codeforces 616A