javascript 易错知识点实例小结


Posted in Javascript onApril 25, 2020

本文实例总结了javascript 易错知识点。分享给大家供大家参考,具体如下:

为什么 typeof null === 'object'

原理是这样的,不同的对象在底层都表示为二进制,在JavaScript中二进制前三位都为0的话会被判断为 object 类型, null 的二进制表示是全0,自然前三位也是0,所以执行 typeof 时会返回“ object ”。

对象属性的存在性

如 myObject.a 的属性访问返回值可能是 undefined ,但是这个值有可能是属性中存储的 undefined ,也可能是因为属性不存在所以返回 undefined 。那么如何区分这两种情况呢?

var myObject = {
  a:2
};

// 方案一
("a" in myObject); // true
("b" in myObject); // false

// 方案二
myObject.hasOwnProperty( "a" ); // true
myObject.hasOwnProperty( "b" ); // false

// 方案三
Object.prototype.hasOwnProperty.call(myObject, 'b')

对象继承的三种方法

参考如下代码:

function Foo(name) {
			this.name = name;
		}

		Foo.prototype.myName = function() {
			console.log(this.name)
		}

		function Bar(name, label) {
			Foo.call(this, name);
			this.label = label;
		}
        
        // 方法1
		Bar.prototype = Object.create(Foo.prototype)
        
        // 方法2
		Bar.prototype = Foo.prototype;

        // 方法3
        Bar.prototype = new Foo();

		//Bar.prototype.constructor = Bar;

		Bar.prototype.sayName = function() {
			console.log(this.name)
		}

		
		var b = new Foo('fayin')
	
		b.sayName()

上例中,三种方法都可以使 Bar 继承 Foo.prototype 上的方法,但它们之间又有微妙的差别:

Object.create(..) 会凭空创建一个“新”对象并把新对象内部的 [[Prototype]] 关联到你指定的对象(本例中是 Foo.prototype )。

Bar.prototype = Foo.prototype 并不会创建一个关联到 Bar.prototype 的新对象,它只是让 Bar.prototype 直接引用 Foo.prototype 对象。因此当你执行类似 Bar.prototype.myLabel = ... 的赋值语句时会直接修改 Foo.prototype 对象本身。

Bar.prototype = new Foo() 的确会创建一个关联到 Bar.prototype 的新对象。但是它使用了 Foo(..)的“构造函数调用”,如果函数 Foo 有一些副作用(比如写日志、修改状态、注册到其他对象、给 this 添加数据属性,等等)的话,就会影响到 Bar() 的“后代”,后果不堪设想。

结论

因此,要创建一个合适的关联对象,我们必须使用 Object.create(..) 而不是使用具有副作用的 Foo(..) 。这样做唯一的缺点就是需要创建一个新对象然后把旧对象抛弃掉,不能直接修改已有的默认对象。

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
提高 DHTML 页面性能
Dec 25 Javascript
用js 让图片在 div或dl里 居中,底部对齐
Jan 21 Javascript
js 操作符汇总
Nov 08 Javascript
jQuery插件formValidator实现表单验证
May 23 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
Oct 26 Javascript
jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示问题分析
Oct 30 Javascript
从零学习node.js之简易的网络爬虫(四)
Feb 22 Javascript
基于AngularJS的简单使用详解
Sep 10 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
May 04 Javascript
layui table单元格事件修改值的方法
Sep 24 Javascript
深入浅析vue全局环境变量和模式
Apr 28 Javascript
JS异步宏队列与微队列原理区别详解
Jul 02 Javascript
javascript执行上下文、变量对象实例分析
Apr 25 #Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
Apr 25 #Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
Apr 25 #Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
Apr 25 #Javascript
javascript 函数的暂停和恢复实例详解
Apr 25 #Javascript
详解ES6 CLASS在微信小程序中的应用实例
Apr 24 #Javascript
Vue中函数防抖节流的理解及应用实现
Apr 24 #Javascript
You might like
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
2015/12/14 PHP
PHP实现百度人脸识别
2019/05/06 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
教师求职推荐信范文
2013/11/20 职场文书
外贸业务员求职信范文
2013/12/12 职场文书
会计应届生的自荐信
2013/12/13 职场文书
电脑饰品店的创业计划书
2014/01/21 职场文书
工艺员岗位职责
2014/02/11 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
关于安全的标语
2014/06/10 职场文书
食品安全处置方案
2014/06/14 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
个性与发展自我评价
2015/03/06 职场文书
校园音乐节目广播稿
2015/08/19 职场文书