JavaScript继承练习

//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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值