在Jquery中,定义对象的方法主要采用闭包的方式来实现。这种方法可以有效地避免全局变量污染,提高代码的可维护性和安全性。接下来就是完整详细的攻略:
定义对象(闭包)的方法
定义对象的方法主要是采用立即执行函数的形式来创建一个私有作用域,保护函数内的变量和方法不受外界干扰。具体实现步骤如下:
- 写出一个立即执行函数并将其赋值给一个变量
var myObject = (function() {
// 在这里编写对象的属性和方法
}());
- 在这个函数内使用return语句,将需要对外公开的属性和方法返回出去
var myObject = (function() {
// 私有属性
var name = 'myObject';
// 私有方法
function init() {
console.log('init');
};
// 对外公布的方法
return {
sayHello : function() {
console.log('Hello ' + name);
}
};
}());
在这种方式下,只有对外公布的属性和方法才能被访问,实现类似于类的效果。
扩展对象成员的方法
针对已经创建的对象,可以通过Jquery提供的extend()函数来添加新的成员。具体实现步骤如下:
- 使用extend()函数扩展对象成员
$.extend(myObject, {
age : 18,
getInfo : function() {
console.log('I\'m '+ this.age + ' years old.');
}
});
- 添加的成员可以在外部访问
myObject.age; // 18
myObject.getInfo(); // I'm 18 years old.
示例1:通过闭包实现计时器
var timer = (function() {
var count = 0;
function printCount() {
console.log(count);
count++;
}
var intervalId = setInterval(printCount, 1000);
return {
stopTimer : function() {
clearInterval(intervalId);
}
}
}());
在这个示例中,我们通过闭包实现了一个每秒输出计数器的功能,并且将停止计时器的方法对外公布。通过闭包,可以在外部访问stopTimer方法,停止计时器。
示例2:Jquery扩展对象成员
var myObject = {};
$.extend(myObject, {
name : 'myObject',
sayHello : function() {
console.log('Hello ' + this.name);
}
});
myObject.age = 18;
console.log(myObject.name); // myObject
myObject.sayHello(); // Hello myObject
console.log(myObject.age); // 18
在这个示例中,我们首先创建了一个空对象myObject,然后使用Jquery提供的extend()函数向myObject对象中添加了一个name属性和一个sayHello()方法。接着我们手动添加了一个age属性。最后我们可以在外部分别访问这些添加的属性和方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Jquery定义对象(闭包)与扩展对象成员的方法 - Python技术站