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 相关文章推荐
比较全的JS checkbox全选、取消全选、删除功能代码
Dec 19 Javascript
javascript 随机展示头像实现代码
Dec 06 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
Jun 22 Javascript
a标签的href和onclick 的事件的区别介绍
Jul 26 Javascript
使用javascript为网页增加夜间模式
Jan 26 Javascript
jquery获取复选框被选中的值
Apr 10 Javascript
Js与Jq 获取页面元素值的方法和差异对比
Apr 30 Javascript
走进javascript——不起眼的基础,值和分号
Feb 24 Javascript
jQuery倒计时代码(超简单)
Feb 27 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
Sep 03 jQuery
解决Vue打包之后文件路径出错的问题
Mar 06 Javascript
JS实现li标签的删除
Apr 12 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的开合式多级菜单程序
2006/10/09 PHP
PHP生成树的方法
2015/07/28 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
python Django模板的使用方法
2016/01/14 Python
python装饰器初探(推荐)
2016/07/21 Python
Python自定义线程池实现方法分析
2018/02/07 Python
python语言中with as的用法使用详解
2018/02/23 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
工作时间上网检讨书
2014/02/03 职场文书
我的画教学反思
2014/04/28 职场文书
俞敏洪励志演讲稿
2014/04/29 职场文书
中秋手机店促销方案
2014/06/16 职场文书
城市规划应届生推荐信
2014/09/08 职场文书
精神病医院见习报告
2014/11/03 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书