`
sin90lzc
  • 浏览: 157065 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Javascript的一些细节

阅读更多

  本文主要总结了javascript中一些不起眼的地方。虽然不起眼,但有时这些细节很重要。知识点来源于《Javascript权威指南第五版》和个人的一些实践经验。

细节一:typeof 的返回值

  大家都知道typeof 返回的是字符串(嗯!废话)。但有一些特别的对象,它的返回值是需要留意的。有一点很重要:所有的构造函数都是Function 的实例 ,包括Object /String /Array /Date /Number ...的内部对象构造函数名。看下面代码和注释:

alert(typeof null); //值为"object"

alert(typeof undefined);//值为"undefined"

alert(typeof [1,2,3]);//值为"object"

alert(typeof function(){});//值为"function"

alert(typeof Object);//值为"function"。原因是Object是一个构造函数,所以typeof String/Array...都是function


细节二:== ,!= ,=== ,!== 之间的区别

  == /!==== /!== 唯一的区别就是== /!=认为 undefinednull相等,而 === /!==则不相等 !看下面代码和注释

alert(null==undefined);//值为true;

alert(null!=undefined);//值为false;

alert(null===undefined);//值为false;

alert(null!==undefined);//值为true;

 

细节三:infor inhasOwnPropertypropertyIsEnumerableisPrototypeOf

  in :判断一个对象中是否包含有该属性或方法(包含对象的一切属性,包括内部类型属性或方法:valueOf ,toString ,toLocalString ,hasOwnProperty 等等)

      in /for in :枚举一个对象内的属性或方法(包括该对象原型中的属性或方法和该对象实例的属性或方法,但不包括内部类型属性或方法:valueOf ,toString ,toLocalString ,hasOwnProperty 等等但有一点很奇怪,当重写内部类型的属性或方法后,firefox能检出重写的属性,而IE不能)

  hasOwnProperty (x):该方法继承自Object,判断当前对象是否包含名字为x的属性或方法(不包括从原型中继承来的属性)。

  propertyIsEnumerable (x):继承自Object,判断属性x是否为实例属性(不包括从原型中继承的属性或方法)并且该属性是否能枚举。

  isPrototypeOf (o):判断当前对象是不是o的原型对象。

  具体请看下面代码和注释:

//定义一个Rectangle对象并创建它的一个实例rectangle;
	function Rectangle(w,h){
		this.w=w;
		this.h=h;
	}
	Rectangle.prototype.area=function(return this.w*this.h);
	Rectangle.prototype.color="red";
	var rectangle=new Rectangle(10,20);
	rectangle.border=1;

//测试in
        alert("w" in rectangle);//true
   alert("color" in rectangle);//true
	alert("border" in rectangle);//true
   alert("toString" in rectangle);//true
   alert("isOwnProperty" in rectangle);//true

//测试for in
        var names=[];
        for(var name in rectangle){
             names.push(name);
        }
         alert(names);//结果:['w','h','area','color','border'](顺序未必一样)
//测试hasOwnProperty
	alert(rectangle.hasOwnProperty("w"));//true
	alert(rectangle.hasOwnProperty("color"));//false
	alert(rectangle.hasOwnProperty("area"));//false
	alert(rectangle.hasOwnProperty("border"));//true

//测试propertyIsEnumerable
	alert(rectangle.propertyIsEnumerable("w"));//true
	alert(rectangle.propertyIsEnumerable("color"));//false
	alert(rectangle.propertyIsEnumerable("area"));//false
	alert(rectangle.propertyIsEnumerable("border"));//true

//测试isPrototypeOf。要判断一个对象A.prototype为对象B的原型的充分条件是B.constructor==A
	alert(Rectangle.prototype.isPrototypeOf(rectangle));//true:rectangle.constructor==Rectangle
	alert(Function.prototype.isPrototypeOf(Object));//true:Object.constructor==Function


细节四:var 对全局,局部变量的影响

  当变量在一个局部作用区域中定义时,不带var将会把该变量定义为全局变量。代码如下:

(function(){
	global="I'm global variable!";
	var local="I'm local variable!";
})();
alert(global);//I'm global variable!
alert(local);//Error occor:local is undefined

 

细节五:|| 运算符在赋值语句中的作用

  || 应用在赋值语名中时,会从左到右地检测各个表达式,返回第一个为true 的表达式,否则返回最后一个表达式。

var a,b=0,c=1,d;
x=a||b||c||d;//x的值为1;实际上是x=c;
var e=0,f=0,g=0,h;
y=e||f||g||h;//y的值为undefined;实际上是y=h;

 

细节六:“”nullundefined 在一个逻辑表达式内返回false

  直接看代码和注释吧:

alert(""||null||undefined);//false
 

 

 

 

 

分享到:
评论

相关推荐

    JavaScript优化细节.rar

    JavaScript优化细节

    【JavaScript源代码】JavaScript中分号的一些细节.docx

    JavaScript中分号的一些细节  JavaScript 中的分号是可选的,加不加分号主要是个代码风格问题。一种风格是使用分号明确结束语句,即便这些分号不是必需的;另一种风格是尽可能的不加分号,只在必要的情况才加。我...

    java和JavaScript开发细节

    关于 javascript jquery hibernate spring dwr 开发要注意的地方(容易出错、容易忽略,及性能方面影响...)

    《JavaScript语言精髓与编程实践》精选版

    作为纯语言学范畴的讨论,读者在本摘引中不需要过多地了解JavaScript,也不必深究某种语言的细节,作参考文论来读,便是不错。本文主要有“命令式语言”、“函数式语言”和“动态语言”三个部分,均精减自...

    【JavaScript源代码】JavaScript实现电商平台商品细节图.docx

    JavaScript实现电商平台商品细节图  本文分享一个电商平台常见查看商品细节图案例,如某东网站手机类别中具体某一部手机详情页中,手机的细节图展示,左侧小图获得用户鼠标焦点即可在屏幕右侧展示出该图片区域的大...

    javascript初学者应注意的七个细节

    详细介绍了学习javascript应该注意的问题,其中肯定会有你所需要的,值得你的一读。

    JavaScript编程全解

    说明,并通过大量纯正的JavaScript风格代码,帮助读者准确地掌握JavaScript的语言特性及细节用法。  本书适合JavaScript开发初学者系统入门、有经验的JavaScript开发者深入理解语言本质,也适合 开发团队负责人、...

    JavaScript初学者应注意的七个细节

    JavaScript初学者应注意的七个细节

    javascript读取本地文件和目录方法详解

    但也许你还没有发现并应用它的一些更高级的功能吧?比如,对文件和文件夹进行读、写和删除,就象在VB、VC等高级语言中经常做的工作一样。怎么样,你是否需要了解这方面的知识?那就请跟我来,本文将详细描述如何使用...

    我最近在重新学 JavaScript, 巩固一下细节, 也写一个“WTF JavaScript极简入门”,供新人学习.zip

    我最近在重新学 JavaScript, 巩固一下细节, 也写一个“WTF JavaScript极简入门”,供新人学习.zip

    JavaScript详解(第2版)

    2.2 语法细节 27 2.2.1 区分大小写问题 27 2.2.2 自由形式及保留字 27 2.2.3 语句及分号 28 2.2.4 注释 28 ... 2.2.5 〈script〉标签   2.3 生成HTML 并输出显示   2.3.1 字符串及字符串串联   ...

    ajax教程 JavaScript™ 技术

    Ajax 由 HTML、JavaScript™ 技术、DHTML...Ajax 专家,他演示了这些技术如何协同工作 —— 从总体概述到细节的讨论 —— 使高效的 Web 开发成为现实。他还揭开了 Ajax 核心概念的神秘面纱,包括 XMLHttpRequest 对象。

    HTML-CSS-JAVASCRIPT

    基础到复杂 和扩展使用~ HTML 文件结构 文字 图片 链接 表格 表单 多窗口 特殊字符…… CSS细节 CSS的各种属性 Javascript介绍 Javascript语言

    编写可维护的JavaScript(中文)

    20.1 被忽略的细节 20.2 编制打包计划 20.2.1 开发版本的构建 20.2.2 集成版本的构建 20.2.3 发布版本的构建 20.3 使用CI系统 20.3.1 Jenkins 20.3.2 其他CI系统 附录A JavaScript编码风格指南 附录B ...

    Javascript

    《JavaScript:The Good Parts(影印版)》一书中,Crockford深度分析了一堆好的意图和盲目的错误,为你提供了所有JavaScript的地道优良部分的细节,包括:·语法·继承·方法;·对象·数组·风格;·函数·正则表达式...

    JavaScript

    《JavaScript:The Good Parts(影印版)》一书中,Crockford深度分析了一堆好的意图和盲目的错误,为你提供了所有JavaScript的地道优良部分的细节,包括:·语法·继承·方法;·对象·数组·风格;·函数·正则表达式...

    javascript

    《JavaScript:The Good Parts(影印版)》一书中,Crockford深度分析了一堆好的意图和盲目的错误,为你提供了所有JavaScript的地道优良部分的细节,包括:·语法·继承·方法;·对象·数组·风格;·函数·正则表达式...

    JavaScript Note

    关于学习JavaScript的学习笔记,里面记录的是平时学习容易忽略的细节,已经需要注意内容。

    javascript parseInt() 函数的进制转换注意细节.docx

    javascript parseInt() 函数的进制转换注意细节.docx

Global site tag (gtag.js) - Google Analytics