首页 > 代码库 > 对象继承其他对象的方法和属性
对象继承其他对象的方法和属性
顶一个扩展函数,用来将第二个参数及以后的属性、方法拷贝给第一个函数;
<script>// var extend=(function(){}()); 这是格式 var extend=(function(){ var p; var result=p in {toString:null}; if(result){ //检测p是否存在toString属性,这是一个检测 看是否可以可枚举 所以用toString这个为代表 return function extend(o){ for(var i=1;i<arguments.length;i++){ //这里采用i=1 开始 是因为第一位0 是o;后面的所有存在的函数都是为o提供方法和属性的,给o扩展; var source=arguments[i]; for(var prop in source){ o[prop]=source[prop]; //这里才是复制属性方法给o; } } return o; }; } //如果p不存在 可以枚举到toString else{ return function pathed_extend(o){ for(var i=1;i<arguments.length;i++){ var source=arguments[i]; for(var prop in source){ o[prop]=source[prop]; }; };// 这里定义要检查的特殊属性 之前没法自动枚举到 var protoprops=[‘toString‘,‘valueOf‘,‘constructor‘,‘hasOwnproperty‘,‘isPrototypeOf‘,‘propertyIsEnmerable‘,‘toLocalString‘]; for(var j=0;j<protoprops.length;j++){ prop=protoprops[j]; if(source.hasOwnProperty(prop)){ o[prop]=source[prop]; } } return o; } } }()); //测试 定义一个空对象 var arr={}; var b={ speak:‘1‘, name:‘b‘, run:function(){ var that=this; alert(this.name+‘正在run‘); } }; var c={ sleep:function(){ alert(‘睡觉‘); } } //arr.run(); //未拷贝之前 报错 extend(arr,b); //拷贝b的方法和属性 arr.name="arr"; //自定义新的属性 arr.run(); //测试拷贝的方法 extend(arr,b,c); //测试多个参数 能不能继承到C的方法 arr.sleep(); //可以 </script>
对象继承其他对象的方法和属性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。