谈谈JavaScript的New关键字


Posted in Javascript onAugust 26, 2016

原型和闭包算是JavaScript中最常见,最难以理解,最容易被当做问题的两个部分,当然还有它们的延伸,如作用域链,继承等等吧,我最近也是各种看,各种翻,记录点自己的心得,写写总会让自己的理解更深一些。(跟标题的关系不大啦,就感慨句,每次总感觉自己懂了,再翻还是收获满满)

先谈一下JavaScript中New关键字吧,通常我们通过它来创建一个类的实例对象,在JavaScript中,实例化对象之后,也就继承了类的属性以及方法。通过代码来演示一下 

function Person(name){
 this.name = name;
}
Person.age= "23";
Person.prototype.say = function(){
 console.log("I'm " + this.name);
};
var person= new Person("王方");
 
console.log(
 person.name, //王方
 person.height //undefined
);
person.say(); //I'm 王方
 
console.log(
 Person.name, //Person
 Person.age//23
);
Person.say(); //Person.say is not a function

我们看下这一行 
var person= new Person("王方");
new 到底做了什么呢?恩 JS引擎做的工作就是下面这样  

var obj = {};
obj.__proto__ = Person.prototype;
var result = Person.call(obj,"王方");
return typeof result === 'obj'? result : obj;

1.首先创建一个新对象 

2.把obj的__proto__ 指向Person的原型对象prototype,此时便建立了obj对象的原型链:obj->Person.prototype->Object.prototype->null 

3.在obj对象的执行空间调用Person函数并传递参数“王方”。 相当于var result = obj.Person("王方")。当这句执行完之后,obj便产生了属性name并赋值为"王方"。 

4.判断返回值,如果无返回值或者返回一个非对象值,就将obj返回,否则讲返回值作为新对象返回(有点绕口,三元运算符,自己看下吧) 

总结:
 Javascript的new关键字主要的作用是继承,如上例子所言,但是要记住一点,Person是一个函数,而person是一个对象,至于函数与对象之间的区别,我有时间再写吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在 IE 中调用 javascript 打开 Excel 表
Dec 21 Javascript
jquery提交form表单时禁止重复提交的方法
Feb 13 Javascript
jQuery构造函数init参数分析续
May 13 Javascript
jquery事件的ready()方法使用详解
Nov 11 Javascript
谷歌Chrome浏览器扩展程序开发小记
Jan 06 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
May 30 Javascript
深入理解(function(){... })();
Aug 16 Javascript
详解jQuery停止动画——stop()方法的使用
Dec 14 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
Jul 12 Javascript
解决Layui 表格自适应高度的问题
Nov 15 Javascript
解决vue2中使用elementUi打包报错的问题
Sep 22 Javascript
原生js实现购物车功能
Sep 23 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
Aug 26 #Javascript
针对JavaScript中this指向的简单理解
Aug 26 #Javascript
轻松掌握JavaScript代理模式
Aug 26 #Javascript
轻松掌握JavaScript单例模式
Aug 25 #Javascript
很酷的星级评分系统原生JS实现
Aug 25 #Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
Aug 25 #Javascript
轻松掌握JavaScript策略模式
Aug 25 #Javascript
You might like
11个PHP 分页脚本推荐
2011/08/15 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
微信小程序开发之相册选择和拍照详解及实例代码
2017/02/22 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
Vue是怎么渲染template内的标签内容的
2020/06/05 Javascript
Python数据结构之Array用法实例
2014/10/09 Python
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
python使用selenium实现批量文件下载
2019/03/11 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
python实现统计代码行数的小工具
2019/09/19 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
Pandas的Apply函数具体使用
2020/07/21 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
.net开发工程师面试题
2014/02/25 面试题
护士实习自我鉴定
2013/10/22 职场文书
企业管理部经理岗位职责
2013/12/24 职场文书
药学专业学生的自我评价分享
2014/02/06 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
聚美优品的广告词
2014/03/14 职场文书
演讲主持词
2014/03/18 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
煤矿安全承诺书
2014/05/22 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python