博客
关于我
js的new关键字
阅读量:206 次
发布时间:2019-02-28

本文共 804 字,大约阅读时间需要 2 分钟。

new关键字的作用

通过new关键字实例化构造函数,获取对象

//定义一个构造函数function person(name){   	this.name = name;	this.say = function(){   		console.log(this.name);	}}//给构造函数的原型设置属性和方法person.prototype.age = '18';person.prototype.sayYes = function(){   	console.log('yyy');}//实例化构造函数let p = new person('小明');console.log(p);// 当前属性console.log(p.name)// 当前方法p.say()console.log(p.color)// 原型方法p.sayBye()

通过new关键字实例化的对象p,具备了构造函数person中this的属性:name,也具备了构造函数person的原型prototype的属性age和方法sayYes。

实现过程

  • 1 .创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型。
var obj = {   };
  • 2 .原型的属性和方法被加入到this引用的对象中。原型的执行,确定对象obj的原型链。
obj.__proto__ = person.prototype;
  • 3 .新创建的对象由this所引用,并且最后隐士的返回this。绑定this对象为obj,传入参数;执行person构造函数,进行属性和方法的赋值操作。
person.call(o,'小明');
  • 4 .返回结果。
    注意:在通过该种方式获取对象时,最终不一定返回的是对象o,要看构造函数的返回值是什么。
    如果函数返回的是基本类型值,实际会生成一个对象,返回o
    如果是函数返回的是引用类型值,则实际返回的是该引用类型值

转载地址:http://iycp.baihongyu.com/

你可能感兴趣的文章
Netstat端口占用情况
查看>>
Netty 4的内存管理:sun.misc.Unsafe
查看>>
Netty channelRegistered\ChannelActive---源码分析
查看>>
Netty NIO transport && OIO transport
查看>>
Netty WebSocket客户端
查看>>
netty 主要组件+黏包半包+rpc框架+源码透析
查看>>
Netty 异步任务调度与异步线程池
查看>>
Netty 解决TCP粘包/半包使用
查看>>
Netty 调用,效率这么低还用啥?
查看>>
netty——Future和Promise的使用 线程间的通信
查看>>
netty——黏包半包的解决方案、滑动窗口的概念
查看>>
Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息
查看>>
Netty中实现多客户端连接与通信-以实现聊天室群聊功能为例(附代码下载)
查看>>
Netty中的组件是怎么交互的?
查看>>
Netty中集成Protobuf实现Java对象数据传递
查看>>
netty之 定长数据流处理数据粘包问题
查看>>
Netty事件注册机制深入解析
查看>>
netty代理
查看>>
Netty入门使用
查看>>
netty入门,入门代码执行流程,netty主要组件的理解
查看>>