JS 对象复制Object.assign和Object.create

Object.create

简介

创建一个拥有指定原型和若干指定属性的对象。多用于对象继承。

语法

Object.create(prototype,[proptertiesObject])
参数
  1. 第一个参数 一个对象,最为新创建对象的原型或者为null;
  2. 可选,该参数的对象拥有一组属性和值,改对象的属性名称和值将会复制给新创建的对象,只有该对象自身拥有的可枚举属性才有效,也就是说该对象的原型链上的属性不会复制给新创建的对象。
抛出异常

如果该对象的第一个参数不是不是一个对象或者null,将会抛出一个TypeError异常。

示例1

function Fn(){

    var a = 3;
    var b = 4;

    this.c = 5;
    this.b = 6;
}

Fn.prototype.log1 = function(){

    console.log(this.a,this.b);
}

Fn.prototype.log2 = function(){

    console.log(this.c,this.b);
}

function Fn1(){

    Fn.call(this); //访问构造函数
}

//继承 Fn 的原型链,Fn相当于Fn1的父类了
Fn1.prototype = Object.create(Fn.prototype);

var fn1 = new Fn1();

fn1 instanceof Fn //true
fn1 instanceof Fn1 //ture

// a 和 b,没有挂载到fn的原型链上,所以无法访问
// a 和 b,相当于是 fn 函数作用域下的局部变量,外部无法访问。
fn.log1(); //undefined undefined
fn1.log1(); //undefined undefined

// b 和 c,挂载到了fn的原型链上,所以可以用this访问
fn.log2(); // 5 6
fn1.log2();// 5 6
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值