js原型

//基于原型的继承
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,启动级联,链式调用方法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值