//基于原型的继承
1.方法调用以及函数调用模式
var myObject = {
value:0,
increment:function (inc){
this.value += typeof inc === 'number'?inc:1;
}
};
var add = function(a,b){
return a+b;
};
//函数模式调用
myObject.double = function(){
var that = this;
var helper = function(){
that.value = add(that.value,that.value);
};
helper();//函数形式调用helper
};
myObject.increment();
alert(myObject.value);//1
myObject.increment(2);
alert(myObject.value);//3
myObject.double();
alert(myObject.value);//6
2.构造器调用模式
//构造器调用
//创建一个构造器函数
var Quo = function(str){
this.status = str;
};
Quo.prototype.get_status = function(){
return this.status;
};
var myq = new Quo("str");
//alert(myq.get_status());//str
//---------------------
/*
3.//apply 调用模式
var add = function(a,b){
return a+b;
};
var array = [3,6];
var sum = add.apply(null,array);
//alert(sum) //9
*/
//---------------------
/*var sto = {status:'ok'};
var Quo = function(str){
this.status = str;
};
Quo.prototype.get_status = function(){
return this.status;
};
var sts = Quo.prototype.get_status.apply(sto);//两者属性要相同status
//alert(sts); //ok
*/
/*
4.//js参数
var fun = function(){
var i = 0 ,sum = 0;
for(;i<arguments.length;i++){
sum += arguments[i];
}
return sum;
};
alert(fun(1,2,3,4,5,6));//21
*/
5.//抛出异常
var add = function(a,b,c){
if(typeof a !== 'number' || typeof b !== 'number' || typeof c !== 'number'){
throw{
name:'NumberTypeError',
message:'数值类型不对'
};
}
return a+b+c;
};
var tryadd = function(){
try{
add("sss","ww","ll");
}catch(e){
alert("exception:" + e.name + "--"+e.message);
}
};
//tryadd();
6./*
//扩充js基本类型
Function.prototype.method = function(name,fun){
if(!this.prototype[name]){
this.prototype[name]= fun;
}
return this;
};
Number.method('integer',function(){
return Math[this < 0 ? 'ceil' : 'floor'](this);
});
String.method('trim',function(){//字符串除去首尾空白
return this.replace(/^\s+|\s+$\g,'');
})
//alert((-10/3).integer());//-3
*/
7.//闭包,返回一个对象操作定义出外部的变量
var myobj = (function(){
var value = 1 ;
return {
increment:function(inc){
value += typeof inc === 'number' ? inc:1;
},
getValue:function(){
return value;
}
};
}());
//alert(myobj.getValue());//1
var quo = function(status){
return {
get_status:function(){
return status;
}
};
};
var quos = quo("ss");
//alert(quos.get_status());//ss
8.//不在循环中使用函数
var add_fun = function(nodes){
var helper = function(i){
return function(e){
alert(i);
};
};
var i ;
for(i = 0;i < nodes.length;i++){
nodes[i].onclick = helper(i);
}
};
9.//函数加上闭包构成函数的模块
10.//函数级联,函数返回this,启动级联,链式调用方法
js原型
最新推荐文章于 2024-08-29 10:24:56 发布