标签:
给类型增加方法
Function.prototype.method=function(name,func){ //if(!this.prototype[name]){ // this.prototype[name]=func; //return this; //} if(typeof this.prototype[name]!=="function"){ this.prototype[name]=func; return this; } }; //提取整数 Number.method("integer",function(){ return Math[(this>0)?"floor":"ceil"](this); }); console.log((-3.3333).integer()); //去掉前后空格 String.method("trim",function(){ return this.replace(/^\s+|\s+$/,""); }); console.log((" 1214 ").trim());
返回值
一个函数总是返回一个值,如果没有指定返回值,则返回undefined;如果函数以在前面加上new前缀的方式来调用,且返回值不是一个对象,则返回this(改新对象)
假值
null false undefined "" 0 NaN
//创建一个用原对象作为原型的对象
if(typeof Object.beget!=="function"){
Object.beget=function(o){
var F=function(){};
F.prototype=o;
return new F();
};
}
this的值取决于调用模式
1、方法调用模式
当一个函数被保存为对象的一个属性时,我们称之为一个方法。当一个方法被调用时,this被绑定到改对象。如果一个调用表达式包含一个属性存取表达式时,那么它被当作一个方法来调用
2、函数调用模式
当一个函数并非一个对象的属性是,那么它被当作一个韩式来调用,当函数以此模式调用时,this被绑定到全局对象
如果内部函数想访问外部函数的this可以这样做
myObject.double=function(){
var that=this;
var helper=function(){
that.value=add(that.vaue,that.value);
}
3、构造器调用模式
如果在一个函数前面带上new 来调用,那么将创建一个隐藏连接到该函数的prototy成员的新对象,同时this将会被绑定到那个新对象上
4、apply调用模式
函数可以拥有方法;apply方法让我们构建一个参数数组并用其去调用函数。它也允许我们选择this的值,方法接收两个参数,第一个是被绑定给this的值,第二个就是一个参数数组
helper();
}
标签:
原文地址:http://www.cnblogs.com/yhf286/p/5037208.html