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);
}
});
分享到:
相关推荐
原生js实现jquery $.extend方法 通过遍历对象属性来实现
Java 中 extend 与 implement 的区别 Java 语言中,extend 和 implement 是两个基本概念,它们之间的区别是非常重要的。extend 用于继承类,而 implement 用于实现接口。在 Java 中,不支持多重继承,但是可以使用...
jquery.validate.extend.js
例如:配置“extend_edit.min.js.minifier”内容: extend_cal.js extend_caltree.js extend_ref.js extend_search.js extend_tuple.js extend_batch.js extend_label.js extend_edit.js 3. 执行Minifier.exe命令,...
在JavaScript开发中,`underscore` 和 `jQuery` 都提供了扩展对象的功能,即 `_.extend()` 和 `$.extend()` 方法。这两个方法允许开发者合并一个或多个对象的属性到目标对象中,实现对象间的属性拷贝。本文将深入...
Cesium是一个强大的开源JavaScript库,用于在Web上创建交互式的3D地球模型。"cesium-extend"项目是针对Cesium的功能扩展包,旨在增强其原生能力,提供更多的实用功能,如白模(Wireframe)展示和避让(Occlusion)...
标题“Extend”通常指...总之,`Extend`这个主题在JavaScript中涵盖了对象复制、继承、原型链和类的使用,而`tree.js`可能是这些概念的具体实现。学习和理解这些内容对于深入理解和编写复杂的JavaScript代码至关重要。
### jQuery.extend 函数详解 #### 一、概述 在JavaScript前端开发中,jQuery是一个非常流行的库,它简化了许多常见的操作,比如DOM操作、事件处理、AJAX交互等。`jQuery.extend`是jQuery提供的一个用于扩展jQuery...
页面数据展示的提出方法,通过在页面上放置模板参数,并初始化Template Dom类,将Html复制并放入文本数据,添加到页面上,依赖于jQuery和extend.Page.js
script src = "lib/ClassExtend.js" > < script > function ClassFoo() { } function ClassBar(arg) { ClassFoo . call ( this , arg ) ; } ClassBar.extend(ClassFoo); < / script > 网络工作者 ...
总的来说,`extend-error`库提供了一种简洁、强大的方式来增强JavaScript中的错误处理能力,让前端和Node.js应用的错误管理更加精细化和高效。通过定义和使用自定义错误类型,开发者可以更好地组织代码,提升代码...
ExtJS的`extend`特性是其核心的面向对象机制之一,它允许我们在JavaScript中创建类的继承链。在Ext Designer的环境下,这个概念尤为重要,因为设计师工具提供了可视化的界面来帮助开发者更直观地构建和扩展组件。这...
**jQuery.extend** jQuery.extend是jQuery库中的一个非常重要的方法,用于合并两个或更多对象的属性到第一个对象上。这个功能在开发过程中非常实用,尤其是在处理配置选项、扩展插件或者对象继承时。让我们深入探讨...
`$.fn.extend`是jQuery库中的一个核心方法,主要用于扩展jQuery对象的方法集合。这个方法允许开发者自定义jQuery的函数,从而实现对DOM元素的操作或添加新的功能。在jQuery中,`$.fn`实际上是`$.prototype`的一个...
在实际开发中,`extend`方法常用于框架和库,如jQuery、Backbone.js等,它们提供了一种标准的方式来创建可复用的组件和模块。 在给出的`test_extend.html`文件中,可能包含了一个示例,演示了如何使用`extend`方法...
"class-extend"就是一个这样的开源库,专注于类的扩展功能,类似于JavaScript中的类继承机制。在这个库中,我们可以找到一系列用于处理和扩展类的实用工具,使我们能够更加灵活地构建和组织代码。 在JavaScript中,...