Object.extend

原文:[转载]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 ==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) {    // 一个静态方法, 传入一个对象, 克隆一个新对象并返回
    returnObject.extend({},
object);
}
});

时间: 2024-08-29 10:03:30

Object.extend的相关文章

jQuery插件开发的两种方法及$.fn.extend的详解

jQuery extend扩展开发: 1 类级别  类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法. 开发扩展其方法时使用$.extend方法,即jQuery.extend(object); $.extend({ add:function(a,b){return a+b;} , minus:function(a,b){return a-b;} }); 页面中调用: var i = $.add(3,2); var j = $.minus(3,2); 2

图片放大功能插件及jquery.extend函数理解

前端时间,产品提出社区评论中的图片需要有放大功能.感觉可以共用,所以就想整合一个插件,过程中也借鉴了一些例子. 分析下自己的代码思路: var scaleImg = function(opts) { this.opts = $.extend({ wrap: '', clickimgs: '', callback: function(){} }, opts); this.images_n = []; //保存一条评论中的所有图片 this.$showArrow = false; //显示左右翻页按

Ember——Ember 创建一个Object 对象

<!-创建好的completed模板-> <li {{action 'enterApp' appitem.id on='click'}}></li> *'enterApp'是要调用的函数名 *appitem.id 是要传给函数的参数ID名 *on='click' 是点击li触发的点击事件 一.定义一个命名空间 App = Ember.Application.create(); 二.创建一个对象 App.AppitemData=Ember.Object.extend();

2.3 The Object Model -- Computed Properties

一.What are computed properties? 1. 简而言之,计算属性让你声明函数为属性.你通过定义一个计算属性作为一个函数来创建一个,当你请求这个属性时,Ember会自动调用这个function. 之后你可以用同样的方法使用它,任何正常静态属性. 2. 对于获取一个或多个正常的属性和转换或者操纵它们的数据去创建一个新的值,它是超级便利. 二.Computed Properties In Action example: Person = Ember.Object.extend(

(jQuery||Zepto).extend 的一个小问题

最近一直在搞移动端,也由于自己对jQuery比较熟悉,再加上Zepto提供了跟jQuery一样的API,所以就选择了Zepto作为开发框架. 由于是移动端开发,所以也应用了一些ES5新增的API,比如forEach,下面就是我写的代码的一些示例: list.forEach(function(v) { return !!v; }) 我天真的以为forEach就跟jQuery的each一样,只要我的返回值为false,它就会中断循环,于是,类似这样的遍历代码写了不少(真的是懒得为每个遍历去声明变量啊

jQuery插件开发 格式与解析3之$.extend()用途

前叙:$.extend()——用途:扩展和继承 1.Object extend() 用一个或多个对象扩展另一个对象,并返回已修改的原始对象.这对于简单继承是一个非常有用的实用工具. (1)扩展:(Dom元素方法的扩展) ①单个方法扩展写法: $.fn.testFn=function(options){ $.defaultOptions={ name:"Li", age:20, getName:function(){ return this.name; } var p=$.extend(

JS与Jquery 中的extend用法不同

1, Jquery //jQuery 应用扩展 jQuery.extend({                  // 定义setApDiv     setApDiv:function () {                      //TODO     }       }); 调用方法: $.setApDiv(); 2 Javascript 这个函数的功能基本都是实现对象的拷贝功能,即将一个对象的所有属属性拷贝到另外一个对象上去,这个函数使用的频率也很高,如果我们要将一个类的所有方法拷贝到

jQuery.extend()的合并对象功能

jQuery.extend( [ deep ], target, object1, [ objectN ] )合并对象到第一个对象 //deep为boolean类型,其它参数为object类型 var object1 = { apple: 0, banana: {weight: 52, price: 100}, cherry: 97}; var object2 = { banana: {price: 200}, durian: 100}; 实例1: $.extend(object1, objec

js extend的实现

var obj = { a: "aaaaaa" }; var obj1 = { b: "bbbbbb" }; Object.extend = function (destination, source) { for (property in source) { destination[property] = source[property]; } return destination; } Object.extend(obj, obj1); alert(JSON.s