Object.extend = function(destination, source) {
for (var property in source) {
destination[property] = source[property];
}
return destination;
}
Prototype 对Object类进行的扩展主要通过一个静态函数Object.extend(destination, source)实现了JavaScript中的继承。 从语义的角度,Object.extend(destination, source)方法有些不和逻辑, 因为它事实上仅仅实现了从源对象到目标对象的全息拷贝。不过你也可以这样认为:由于目标对象拥有了所有源对象所拥有的特性, 所以看上去就像目标对象继承了源对象(并加以扩展)一样。另外, Prototype对Object扩展了几个比较有用的静态方法, 所有其他的类可以通过调用这些静态方法获取支持。
JScript code
Object.extend = function(destination, source) { // 一个静态方法表示继承, 目标对象将拥有源对象的所有属性和方法
for (var property in source) {
destination[property] = source[property]; // 利用动态语言的特性, 通过赋值动态添加属性与方法
}
return destination; // 返回扩展后的对象
}
Object.extend(Object, {
inspect: function(object) { // 一个静态方法, 传入一个对象, 返回对象的字符串表示
try {
if (object == undefined) return 'undefined'; // 处理undefined情况
if (object == null) return 'null'; // 处理null情况
// 如果对象定义了inspect方法, 则调用该方法返回, 否则返回对象的toString()值
return object.inspect ? object.inspect() : object.toString();
} catch (e) {
if (e instanceof RangeError) return '...'; // 处理异常情况
throw e;
}
},
keys: function(object) { // 一个静态方法, 传入一个对象, 返回该对象中所有的属性, 构成数组返回
var keys = [];
for (var property in object)
keys.push(property); // 将每个属性压入到一个数组中
return keys;
},
values: function(object) { // 一个静态方法, 传入一个对象, 返回该对象中所有属性所对应的值, 构成数组返回
var values = [];
for (var property in object) values.push(object[property]); // 将每个属性的值压入到一个数组中
return values;
},
clone: function(object) { // 一个静态方法, 传入一个对象, 克隆一个新对象并返回
return Object.extend({}, object);
}
});
转自:http://www.cnblogs.com/5201314/archive/2009/05/22/1487213.html
分享到:
相关推荐
JavaScript中的`Object.extend`是一个用于实现...在实际开发中,虽然现代JavaScript推荐使用`class`语法和`class extends`来实现继承,但`Object.extend`在早期的JavaScript代码中仍然常见,并且在某些场景下仍然有用。
JavaScript中对象的extend操作是指将一个或多个对象的内容复制到另一个对象中,通常用以合并属性和方法。这项功能在JavaScript编程中非常实用,因为它可以方便地实现对象之间的属性继承和扩展。由于JavaScript不支持...
在提供的代码示例中,`extend`函数接受一个可选参数`arr`,并使用`$.extend()`方法将其与一个预设的对象合并。如果`arr`未定义或为`null`,`$.extend()`会使用空对象`{}`作为源对象,这样就不会改变目标对象的原始...
`jQuery.extend(target, object1, object2, ..., objectN)` 允许将多个对象的属性合并到目标对象`target`上。其基本语法如下: ```javascript var obj1 = {a: 1, b: 2}; var obj2 = {b: 3, c: 4}; $.extend(obj1, ...
使用这个模拟库,你可以像使用原生jQuery一样调用 `$.fn.extend` 和 `$.extend`: ```javascript _$_().fn.extend({myMethod: function() {console.log('My custom method!')}}) _$_().myMethod(); // 输出 "My ...
此外,虽然`$.extend`是jQuery提供的便利工具,但在现代JavaScript中,我们可以使用`Object.assign`进行浅拷贝,或者使用`JSON.parse`和`JSON.stringify`组合实现简单的深拷贝。对于更复杂的深拷贝需求,可以考虑...
在这个例子中,`pageConfig`对象被初始化为空对象,然后使用`$.extend()`方法扩展了新的属性。这些属性包括`createUrl`、`deleteUrl`、`modifyUrl`和`infoName`,它们都来自于传递给`$.extend()`的第二个对象。最后...
$.extend方法的使用非常广泛,尤其是在需要构建可配置或可定制的JavaScript插件时。通过使用这种扩展方法,开发者可以设计出具有默认配置但允许用户自定义选项的插件。这种模式不仅可以简化插件的使用,还可以提高...
在JavaScript中,`extend` 和 `Object.create` 都是用来实现对象继承的方法,它们在不同的场景下有不同的优势和用途。让我们深入探讨这两种方法的工作原理、使用场景以及它们之间的区别。 首先,`extend` 是一种...
在JavaScript的世界里,jQuery库为开发者提供了许多便捷的API,其中`$.extend`是一个非常实用的方法,用于合并或扩展对象的属性。这篇文章将深入探讨`$.extend`在jQuery中的使用,以及它如何帮助我们处理JSON对象。 ...
- **`Object.prototype.extend`**:该方法使得任何对象都可以直接使用 `extend` 方法来自身扩展其他对象的属性。这是一种链式调用的方式,使得代码更加灵活。 #### 6. Function.prototype.bind 方法 ```javascript...
`jQuery.fn.extend()`方法的一个常见用途是创建自定义动画效果或处理事件,因为它将新方法添加到jQuery的原型链中,使得这些方法可以像其他内建的jQuery方法一样使用。 总的来说,`jQuery.extend()`和`jQuery.fn....
`jQuery.extend()` 用于合并一个或多个源对象(`object1, object2, ..., objectN`)的属性到目标对象(`target`)中。如果提供了`deep`参数,并且其值为`true`,则执行深度合并,即如果源对象和目标对象有嵌套的对象...
- 当使用 `$.extend` 向 jQuery 添加方法或属性时,需要注意不要覆盖已有的功能,以避免潜在的冲突或错误。 - 在开发插件时,推荐使用匿名函数包装器来避免命名冲突。 - 如果需要进行深拷贝,确保不要对大型对象或...
如果传递多个源对象(object1, objectN),$.extend方法会将这些对象的属性依次复制到target对象中。需要注意的是,如果有相同的属性名,后面的对象的属性值会覆盖前面的对象的属性值。 总结而言,了解和掌握jQuery...
`Object.extend` 是一个用于合并两个对象属性的方法,将源对象的所有可枚举属性复制到目标对象中。 - **语法**: ```javascript Object.extend(destination, source); ``` - **示例**: ```javascript var ...