谈谈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 相关文章推荐
Jquery拖拽并简单保存的实现代码
Nov 28 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
Jan 19 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
Apr 01 Javascript
动态显示可输入的字数提示还可以输入的字数
Apr 01 Javascript
超实用的JavaScript表单代码段
Feb 26 Javascript
Node.js操作mysql数据库增删改查
Mar 30 Javascript
AngularJs directive详解及示例代码
Sep 01 Javascript
详谈js原型继承的一些问题
Sep 06 Javascript
vue params、query传参使用详解
Sep 12 Javascript
javascript 中模板方法单例的实现方法
Oct 17 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
Jan 16 Javascript
JS 数组和对象的深拷贝操作示例
Jun 06 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
如何使用PHP获取网络上文件
2006/10/09 PHP
怎样在php中使用PDF文档功能
2006/10/09 PHP
php递归遍历删除文件的方法
2015/04/17 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
Vue 中使用vue2-highcharts实现top功能的示例
2018/03/05 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
使用python实现扫描端口示例
2014/03/29 Python
Python中的pass语句使用方法讲解
2015/05/14 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
教师绩效考核方案
2014/01/21 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
我的兄弟姐妹观后感
2015/06/15 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
入团申请书格式
2019/06/20 职场文书
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android