美文网首页
js继承、深度复制

js继承、深度复制

作者: redpeanuts | 来源:发表于2020-03-31 18:32 被阅读0次

继承

//父类
function parent(name) {
  this.name = name
}
//父类原型
parent.prototype.getName = function() {
  return this.name
}

/*此处不能用箭头函数,因为词法作用域将this指向全局对象window,如果不用this则可以
parent.prototype.getName = () => {
  return this.name
}
*/

//其他父类
function other(addr) {
  this.addr = addr
}

other.prototype.getAddr = function() {
  return this.addr
}

//子类
function child(age, name, addr) {
  other.call(this, addr)
  parent.call(this, name)
  this.age = age
}

child.prototype.getAge = function() {
  return this.age
}

//若子类原型添加属性则这一步是必须的,否则会访问不到
let cprototype = child.prototype
child.prototype = Object.create(parent.prototype)//单继承推荐这样写,修改child中的属性不会影响parent的prototype

Object.assign(child.prototype, cprototype, other.prototype) //混合other的prototype
child.prototype.constructor = child   //将构造函数指向child


let c = new child(22, 'tom', 'us')

console.log(c.getAge()) //22

console.log(c.getName())//tom

console.log(c.getAddr())//us

复制

function dp(obj) {
  if (typeof obj !== 'object') return // 如果属性为空则递归结束
  let newobj = obj instanceof Array ? [] : {}
  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      newobj[key] = typeof obj[key] === 'object' ? dp(obj[key]) : obj[key]
    }
  }
  return newobj
}

相关文章

  • js继承、深度复制

    继承 复制

  • 我的javascript代码片段

    1.对象的继承扩展——深度复制

  • js继承遇到的小问题

    这两天在看js继承方面,它不像OC那种传统的类继承。js继承方式还是挺多的。比如:原型继承、原型冒充、复制继承 原...

  • js深度复制

    function extend(par,chil){ var chil=chil||{}; for(var k...

  • js 对象深度复制

    js 对象复制是地址传递, 而不是值传递, 可以使用如下方法进行``深度复制`

  • js ,对象深度复制

    1、基于ES5语法 var deepClone=function(obj){ varcopy; //处理3种基础类...

  • 深度挖掘js原型继承

    js继承一直是我觉得很神奇的地方,一年前看到这里的时候,其实是在死记硬背,只知道how to inherit,不知...

  • js中的(混合对象)类

    显式混入 js手动实现类的复制功能 寄生继承 以上例子,现复制父类Vehicle的定义,然后再混入子类的定义(如果...

  • web前端-js继承的理解

    什么是继承 js中的继承就是获取存在对象已有属性和方法的一种方式. 继承一 属性拷贝 就是将对象的成员复制一份给需...

  • 原型链和继承

    javascript 中没有类的概念,主要通过原型链来实现继承。通常情况下,继承意味着复制操作,然后js默认并不会...

网友评论

      本文标题:js继承、深度复制

      本文链接:https://www.haomeiwen.com/subject/opdguhtx.html