迅雷面试题:深拷贝对象,除了原型上的属性?

我的解决方法是:参考jquery中extend方法的实现,通过isPlainObject 函数判断该对象是否具有通过构造函数继承的原型上的属性。
请问,我这个解决方法有什么问题吗?

 isPlainObject = function(obj) {

          if (obj.constructor && !hasOwn.call(obj, "constructor")

            && !hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) {

            return false;

          }

          var key;

          for (key in obj) {

          }

          return key === undefined || hasOwn.call(obj, key);

},

        

       

 //测试,对于对象x不进行深拷贝

function O() {

  this.yyy = 'yyy';

}

function X() {

  this.xxx = 'xxx';

}

X.prototype = new O();

x = new X();


obj1 = { a : 'a', b : 'b', y : '1'  };

obj2 = {  x : { xxx : 'xxx', yyy : 'yyy' },  y : 'y' };

var combineObj = $.extend(true,obj1,obj2);

console.log(combineObj);


ABOUTYOU
浏览 398回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript