javascript的坑

1 for in循环:使用它时,要主要遍历的是所有可枚举的属性(实例以及原型中的属性)

function Person(name){
    this.name = name;
}
Person.prototype.getName=function(){
    return this.name;
}
var p = new Person(‘mengxb‘);
for(prop in p) {
//此时会遍历到原型上的getName,如果不想遍历原型上的属性和方法,可以用hasOwnProperty() if(p.hasOwnProperty(prop)){   // some opertion here }
}

另外还有一个in操作符,可以用来判断某个属性是否能被某个实例访问到

//利用上面的代码
alert(name in p);//true
alert(getName in p);//true

小技巧:可以利用in操作符以及hasOwnProperty方法来写一个新方法hasPrototypeProperty()

function hasPrototypeProperty(object, prop){
  return (prop in  object) && !object.hastOwnProperty(prop);
}
时间: 2024-12-07 20:51:36

javascript的坑的相关文章

Javascript的坑(一)---------- block statement scope

在ECMAScript 6之前,Javascript是没有block statement scope的..... 这就导致了诡异的现象,比如下面的代码 var x = 1; { var y = 2; } console.log(y); // outputs 2 简直神奇..... 现在有了ECMAScript 6,代码就可以这样写 var x = 1; { let y = 2; } console.log(y); // ReferenceError: y is not defined 嗯,这样就

JavaScript避坑

1, js运算精度问题=> 1 输入>0.1+0.2==0.3 2 返回>false 3 4 输入>0.1+0.2 5 返回>0.30000000000000004 支招: 思路很简单,先赋给个变量,用toFixed(保留小数位);函数四舍五入,但是这样还不够,如果处理的值还需要参与运算的话,需要用Number(值/变量);函数转换为数字类型 1 输入>var num=0.1+0.2; 2 输入>var num2=num.toFixed(2); 3 输入>n

JavaScript的坑,缺陷

JavaScript的缺陷 1.在做判断的时候用=======而不是== 2.浮点预算有精度问题 通过差值去把这个精度锁定到一个范围 Math. Abs(A-B)<0.0001** 3.null和undefined null:表示当前值为空 undefined:主要用来判断函数参数是否传递 原文地址:https://www.cnblogs.com/heihaquyu/p/JavaScript_bad.html

JavaScript的赋值深坑

以前学C++的时候(大学时代),对传参时印象深刻的是,传的值是值还是值的地址. 之后学JavaScript的时候,发现不用理会那么多,虽然不严谨,但是用起来很便捷,比如说类型转换呀,啥的简单多了..... 可是最近几天就遇到了坑... 先上代码: []===[]  // false []==[]   // false 上面的代码是用来判断是否为空数组用的.不巧的是,结果如大家看到的,起初我以为是JavaScript的bug,也就不以为然.因为JavaScript的坑还是挺多了,而且之前也有大概的

Javascript异步编程之三Promise: 像堆积木一样组织你的异步流程

这篇有点长,不过干货挺多,既分析promise的原理,也包含一些最佳实践,亮点在最后:) 还记得上一节讲回调函数的时候,第一件事就提到了异步函数不能用return返回值,其原因就是在return语句执行的时候异步代码还没有执行完毕,所以return的值不是期望的运算结果. Promise却恰恰要回过头来重新利用这个return语句,只不过不是返回最终运算值,而是返回一个对象,promise对象,用它来帮你进行异步流程管理. 先举个例子帮助理解.Promise对象可以想象成是工厂生产线上的一个工人

JavaScript - 收藏集 - 掘金

Angular 中的响应式编程 -- 浅淡 Rx 的流式思维 - 掘金第一节:初识Angular-CLI第二节:登录组件的构建第三节:建立一个待办事项应用第四节:进化!模块化你的应用第五节:多用户版本的待办事项应用第六节:使用第三方样式库及模块优化用第七节:给组件带来活力Rx--隐藏在 Angular 中的利剑Redux你的 A... Electron 深度实践总结 - 前端 - 掘金思维导图 前言: Electron 从最初发布到现在已经维护很长一段时间了,但是去年才开始慢慢升温.笔者个人恰好

单例模式和angular的services的使用方法

在现实生活中存在着有这样的特点的一些类: A.这些类只能有一个实例: B.这些能够自动实例化: C.这个类对整个系统可见,即必须向整个系统提供这个实例. 不妨举一个具体的单例模式的例子:比如教室里面的教师和学生都是需要在黑板上写字的,但是一般的情况下,教室里面应该只有一个黑板吧,它是教师和学生公用滴.这时就要想办法保证取得的黑板是一个共享的唯一的对象.而单例模式就是解决这类问题的一个已经成型的模式. Angular带来了很多类型的services.每个都会它自己不同的使用场景.我们将在本节来阐述

AngularJS 之Services讲解

Angular带来了很多类型的services.每个都会它自己不同的使用场景.我们将在本节来阐述. 首先我们必须记在心里的是所有的services都是singleton(单例)的,这也是我们所希望得到的预期结果. 下面让我开始今天的services之旅吧: Constant 示例: app.constant('fooConfig', { config1: true, config2: "Default config2" }); constant是个很有用的东东,我们经常会用于对dire

Swift の 函数式编程

Swift 相比原先的 Objective-C 最重要的优点之一,就是对函数式编程提供了更好的支持. Swift 提供了更多的语法糖和一些新特性来增强函数式编程的能力,本文就在这方面进行一些讨论. Swift 概览 对编程语言有了一些经验的程序员,尤其是那些对多种不同类型的编程语言都有经验的开发者, 在学习新的语言的时候更加得心应手.原因在于编程语言本身也是有各种范式的, 把握住这些特点就可以比较容易的上手了. 在入手一门新的语言的时候,一般关注的内容有: 原生数据结构 运算符 分支控制 如果是