函数

来源:互联网 发布:rt809编程器怎么安装 编辑:程序博客网 时间:2024/06/05 10:28

// 所谓编程,就是讲一组需求分解成一组函数与数据结构的技能

// 当实参个数少于形参个数,缺失的值会被替换为undefined ,当实参个数多余形参个数,多的形参会自动忽略

// 方法调用模式
//
// 当一个函数被保存为对象的一个属性时,我们称它为 一个方法。当一个方法被调用时,this 被绑定在该对象。

// 创建myObject 对象。它有一个value 属性 和一个 increment 方法。
// increment 方法接受一个可选参数,如果参数不是数字,则默认使用数字 1

var myObject = {
value : 0,
increment : function (inc){
this.value += typeof inc === ‘number’ ? inc : 1;
}
};

myObject.increment();
console.log(myObject.value); // 1

myObject.increment(2);
console.log(myObject.value); // 3

/*
函数调用模式
*/

//var sum= add(3,4);

// 以函数模式调用函数,this被绑定到全局对象,这是一个语言设计上的错误;
// 修正:定义一个变量,赋值为this,那么内部函数就可以通过这个变量访问到this

myObject.double = function(){
var that = this;

var helper = function(){    that.value = add(that.value,that.value);}helper(); // 以函数形式调用helper

}

/*
构造器调用模式
*/
// 如果在一个函数前面带上 new 来调用,那么背地里将会创建一个连接到该函数的prototype 成员的新对象,同时 this 会被绑定到那个新对象上。
// 创建一个名为Quo的构造器函数。它构造一个带有status属性的对象。
//
var Quo = function (string){
this.status = string;
}
// 给Quo的所有实例提供一个名为 get_status 的公共方法。

Quo.prototype.get_status = function(){
return this.status;
};

// 构造一个Quo实例。
var myQuo = new Quo(‘confused’);

// 按照约定 ,他们保存在以 大写格式命名的变量里
// 不推荐这种形式的构造器函数

/*
Apply调用模式
*/

// apply 方法让我们构建一个参数数组传递给调用函数。
// 它也允许我们选择this的值。
// apply 方法接受两个参数,第一个是要绑定给this的值,第二个是一个参数数组
//
//

var array = [3,4];
var sum = add.apply(null,array); // sum = 7

// 构造一个包含 status 成员的对象。

var statusObject = {
status : ‘A-ok’,
};
// statusObject 并没有继承来自 Quo.prototype,但我们可以在statusObject 上调用get_status 方法
// 尽管statusObject 并没有一个名为get_status的方法

var status = Quo.prototype.get_status.apply(statusObject);
// status = ‘A-ok’;

0 0
原创粉丝点击