`
lmh2072005
  • 浏览: 113840 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

javascript Object.extend的用法

    博客分类:
  • js
阅读更多

javascript Object.extend的用法

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 == nullreturn '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中的`Object.extend`是一个用于实现...在实际开发中,虽然现代JavaScript推荐使用`class`语法和`class extends`来实现继承,但`Object.extend`在早期的JavaScript代码中仍然常见,并且在某些场景下仍然有用。

    JavaScript Object的extend是一个常用的功能

    JavaScript中对象的extend操作是指将一个或多个对象的内容复制到另一个对象中,通常用以合并属性和方法。这项功能在JavaScript编程中非常实用,因为它可以方便地实现对象之间的属性继承和扩展。由于JavaScript不支持...

    Js-$.extend扩展方法使方法参数更灵活.docx

    在提供的代码示例中,`extend`函数接受一个可选参数`arr`,并使用`$.extend()`方法将其与一个预设的对象合并。如果`arr`未定义或为`null`,`$.extend()`会使用空对象`{}`作为源对象,这样就不会改变目标对象的原始...

    jQuery.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函数

    使用这个模拟库,你可以像使用原生jQuery一样调用 `$.fn.extend` 和 `$.extend`: ```javascript _$_().fn.extend({myMethod: function() {console.log('My custom method!')}}) _$_().myMethod(); // 输出 "My ...

    浅拷贝深拷贝之jQuery中的$.extend分析

    此外,虽然`$.extend`是jQuery提供的便利工具,但在现代JavaScript中,我们可以使用`Object.assign`进行浅拷贝,或者使用`JSON.parse`和`JSON.stringify`组合实现简单的深拷贝。对于更复杂的深拷贝需求,可以考虑...

    jQuery中$.extend()用法实例

    在这个例子中,`pageConfig`对象被初始化为空对象,然后使用`$.extend()`方法扩展了新的属性。这些属性包括`createUrl`、`deleteUrl`、`modifyUrl`和`infoName`,它们都来自于传递给`$.extend()`的第二个对象。最后...

    Js-$.extend扩展方法使方法参数更灵活

    $.extend方法的使用非常广泛,尤其是在需要构建可配置或可定制的JavaScript插件时。通过使用这种扩展方法,开发者可以设计出具有默认配置但允许用户自定义选项的插件。这种模式不仅可以简化插件的使用,还可以提高...

    js代码-手写代码练习---extend 与 Object.create 实现

    在JavaScript中,`extend` 和 `Object.create` 都是用来实现对象继承的方法,它们在不同的场景下有不同的优势和用途。让我们深入探讨这两种方法的工作原理、使用场景以及它们之间的区别。 首先,`extend` 是一种...

    浅谈jQuery中的$.extend方法来扩展JSON对象

    在JavaScript的世界里,jQuery库为开发者提供了许多便捷的API,其中`$.extend`是一个非常实用的方法,用于合并或扩展对象的属性。这篇文章将深入探讨`$.extend`在jQuery中的使用,以及它如何帮助我们处理JSON对象。 ...

    prototype 1.3 源码解读

    - **`Object.prototype.extend`**:该方法使得任何对象都可以直接使用 `extend` 方法来自身扩展其他对象的属性。这是一种链式调用的方式,使得代码更加灵活。 #### 6. Function.prototype.bind 方法 ```javascript...

    jQuery中extend()和fn.extend()方法详解

    `jQuery.fn.extend()`方法的一个常见用途是创建自定义动画效果或处理事件,因为它将新方法添加到jQuery的原型链中,使得这些方法可以像其他内建的jQuery方法一样使用。 总的来说,`jQuery.extend()`和`jQuery.fn....

    jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析

    `jQuery.extend()` 用于合并一个或多个源对象(`object1, object2, ..., objectN`)的属性到目标对象(`target`)中。如果提供了`deep`参数,并且其值为`true`,则执行深度合并,即如果源对象和目标对象有嵌套的对象...

    jQuery.extend 函数及用法详细

    - 当使用 `$.extend` 向 jQuery 添加方法或属性时,需要注意不要覆盖已有的功能,以避免潜在的冲突或错误。 - 在开发插件时,推荐使用匿名函数包装器来避免命名冲突。 - 如果需要进行深拷贝,确保不要对大型对象或...

    jQuery的$.extend 浅拷贝与深拷贝

    如果传递多个源对象(object1, objectN),$.extend方法会将这些对象的属性依次复制到target对象中。需要注意的是,如果有相同的属性名,后面的对象的属性值会覆盖前面的对象的属性值。 总结而言,了解和掌握jQuery...

    Prototype(注解)

    `Object.extend` 是一个用于合并两个对象属性的方法,将源对象的所有可枚举属性复制到目标对象中。 - **语法**: ```javascript Object.extend(destination, source); ``` - **示例**: ```javascript var ...

Global site tag (gtag.js) - Google Analytics