//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继承练习
最新推荐文章于 2022-11-30 09:24:55 发布