JS编程小常识很有用


Posted in Javascript onNovember 26, 2012

1.JS中的是是非非
JS是一门计算机编程语言,是一门动态语言也称为脚本语言,是解析型编程语言。为什么是脚本?因为他本身不能执行,就是没有main函数或主程序的入口,必须被他的宿主环境,也就是解析环境解析执行他。为是什么是解析型?因为JS不会进行编程,链接,汇编等一系统的过程生成某个文件,再执行,他就是以字符串形式加载执行..
2.JS中的真真假假
空,null,undefined,false,0,””,'',NaN都为假,其他都为真
3.函数,类,对象,构造器有什么区别?
答:在js中函数,类,对象,构造器可以说是没有任何区别的,我们可以说函数既为对象,对象既为类,类既为构造器。但一般情况下,我们称对象为那个类的实例,这是为了减少混乱。

function Person(){ 
} 
var person = new Person(); 
//Person我们可以称为函数,类,对象,构造器(不带参数) 
//person称为对象的引用

4.懂this关键字,你懂JS五分之一.
this永远指向调用该方法(函数)的那个对象.(必背)
首先要知道this是什么?
this就是js中的一个对象。是一个对象,不是一个函数,此是的对象你可以看作是一个对象的引用,引用谁?引用调用方法的那个对象.
this这个对象存在哪里?存在JS代码中,一般存在于函数之中。如果你把this放到<script>标签中,你可以试下window==this,打印什么?为什么?
剖析this关键字
function ready(){ 
alert(this==window); 
} 
ready();

此时打什么?true,为什么?
function Person(){ 
this.name='张三'; 
alert(this==window); 
} 
new Person();

此时打印什么?false,为什么?
把代码加长点.加一个var perso=
var person = new Person();
全世界的人都知道person引用了new Person产生的那个对象。new Person创建的是一个JS实例对象,我们就可以绑定属性和方法.
看下面这段代码
fn=function(){ 
} 
fn.ready=function(){ 
alert(this== fn); 
}

当调用fn.ready()的时候打印什么?true ,为什么?
十分奇怪,this现在等于一个函数了..为什么?
5.JS中静态方法和属性将助你一臂之力.
什么是静态.顾名思意:就是不动了,JS中不动的方法是什么?就是不需要创建实例,直接可以通过类名调用方法,哪里都没有动。方法就调用了。不需要任何额外的代码。这只是片面之言。所谓静态:就是属于类的属于类本身的特征.
Js中类既为对象,何不能直接绑定属性和方法。当然可以.
fn=function(){ 
} 
fn.name='张三'; 
fn.getName=function(){ 
return fn.name; 
}

这也行,但为什么还要new 的过程,全都这样绑定不就可以了吗?思考
6.prototype和constructor的在JS框架中的影响
prototype为原型,是一个对象。,。
constructor为构造器,是一个函数
到现在为止,你要分清楚,什么时候的对象为对象,什么时候的对象是一个函数.也难为JS解析器,能解析运行如此灵活的代码。
prototype可以说他是一个类的静态的属性,他指向这个对象的实例。换句话说prototype是一个对象。prototype指向的对象和我们new的对象有何区别?建立了一种等价桥梁关系,但不是同一个。当我们在函数prototype上绑定属性的时候,那么属性和值就绑定到了prototype对象上,并没有正真的绑定到那个对象上去。当需要访问那个对象上的这个属性的时候,JS解析器,首先会去从对象本身上去找这个属性,然后再到原型对象上找。
function Person(){ 
} 
var person = new Person(); 
person.name=”张三”; 
Person.prototype.name=”李四”; 
alert(person.name); 
delete person.name; 
alert(person.name);

constructor指向一个对象的构造器。(什么是构造器?自己去复习。),由此可以看出他是一个对象级别的属性。也就是要使用constructor这个属性,必须需要一个对象。
那么prototype是一个对象有没有constructor属性?当然有,既然constructor是指构造器,那有没有一个prototype属性?当然有,以此类推,下面这两段代码是正确的.
constructor.prototype.constructor.prototype.constructor……
prototype.constructor.prototype.constructor.prototype……
其实我也不知道到底可以连多长?感兴趣可以试一下。顺便告诉你用递归算法。
在众多的JS代码中,当我们已知一个对象,要求他的构造器,或者已知一个构造器,求他的对象。应入门了。
7.==和===将判断进行到底.
==和===神像形不象.不要去考虑,一眼就看出是做断判是否相等。
有木有区别?
==判断变量是否相等。
===判断变量的值相等。
以此类推:====用来干嘛的??用来报错的.你懂的.这里只想告诉你,只有==和===
JS中变量是弱类型的,都懂。
var a=3; 
var b=”3”; 
alert(a==b); 
JS中变量的值是强类型的。你懂的. 
var a =3; 
var b =”3”; 
alert(a===b);

都是var 类型的变量,但他们的值不一样,一个是整形,一个是字符串型.
var类型和var类型相比,当然是true,整形和字符串型比,当然是false.
==用来比较他们值是否一样。不会是计较值的类型,只要他们的变量是var类型就可以了。当然是这废话,难不成,你不还能声明第二种变量类型的变量?.
===用来比较,会去判断他们的值是否为同一类型。如果不是,没有的比较。JS中变量的值是强类型的,有整形,字符串,数字,布尔等.
8.typeof和instanceof完成了判断未成的使命
typeof用来判断基本数据类型
instanceof 用来判断对象类型是否为某一个类型号
9.5种继承让你如虎添翼.
i.对象冒充
ii.apply
iii.call
iv.prototype
v.for循环方式
用法:永远只须记住,JS中的继承只是属性和方法的拷贝.
10.DOM模型结构改变你的思想
DOM是一种思想,一种将数据以树状结构数据的思想。学习DOM只需要掌握任何一个节点都有一个父节点和0到多个子节点.任何一个节点都有一个页面上的标签表现形式和一个内存对应着一个标签对象.页面只是展示数据的地方,内存中才是DOM对象数据保存地方。任何一个DOM对象只能有一个父节点对象。父子关系可以随时改变。
必须:
获取对象:查
对象操作:增,修,删
内容操作:innerHTML,innerText等
事件操作:mouse,key
样式操作:id,tag,class
属性操作:attribute
11.回调函数减少编写代码
什么是回调函数?
在JS中函数名是用来标识一个函数的。既我们可以传递给某个函数一个函数名(函数名柄),然后由那个函数来自动调用我们的函数完成相关的处理。
调用者与被调用者分开,我们不需要关心调用者,和被调用者。回调可用于通知机制,事件。
12.函数和arguments
函数名就是函数的句柄,指针,函数名是唯一的,这也成就了JS中没有函数重载。只有函数覆盖。函数名才是唯一标识函数的。
永远需牢访,JS中的函数调用就是在函数名后面加对括号()
函数调用参数可有可无,无论什么情况下,参数都会保存在函数体中的arguments对象中,你可以直接使用他,他是一个对象,参数是以数组形式存放。
13.闭包(匿名函数)为开发开辟了捷径
闭包是函数内调用函数外的参数,一般也可称为匿名函数,但两者有所不同。
闭包的价值在于可以作为函数对象或者匿名函数,对于类型系统而言这就意味着不仅要表示数据还要表示代码。支持闭包的多数语言都将函数作为第一级对象,就是说这些函数可以存储到变量中、作为参数传递给其他函数,最重要的是能够被函数动态地创建和返回.
匿名函数减少了变量名称的冲突,为没有权限作用域的JS提供了权限作用域。当我们需要提供一个接口,但又不想让这个接口对象为全局变量就需要用匿名函数:
(function(){
局部代码,外部永远无法访问,除非你提供一个入口
})();
Javascript 相关文章推荐
XML的代替者----JSON
Jul 21 Javascript
JavaScript基本编码模式小结
May 23 Javascript
js调试系列 源码定位与调试[基础篇]
Jun 18 Javascript
JavaScript页面模板库handlebars的简单用法
Mar 02 Javascript
Jquery中$.post和$.ajax的用法小结
Apr 28 Javascript
jQuery实现的Div窗口震动效果实例
Aug 07 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
Nov 01 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
Jun 07 jQuery
JS库之Waypoints的用法详解
Sep 13 Javascript
react中实现搜索结果中关键词高亮显示
Jul 31 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
Oct 08 Javascript
webpack3升级到webpack4遇到问题总结
Sep 30 Javascript
javascript:history.go()和History.back()的区别及应用
Nov 25 #Javascript
js实现拖拽 闭包函数详细介绍
Nov 25 #Javascript
jquery miniui 教程 表格控件 合并单元格应用
Nov 25 #Javascript
JavaScript mapreduce工作原理简析
Nov 25 #Javascript
jquery div 居中技巧应用介绍
Nov 24 #Javascript
js实现在文本框光标处添加字符的方法介绍
Nov 24 #Javascript
js获取TreeView控件选中节点的Text和Value值的方法
Nov 24 #Javascript
You might like
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
PHP 图片水印类代码
2012/08/27 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
jquery操作select option 的代码小结
2011/06/21 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python数据类型学习笔记
2016/01/13 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
Python面向对象之Web静态服务器
2019/09/03 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
Linux内核产生并发的原因
2016/11/08 面试题
工程专业求职自荐书范文
2014/02/18 职场文书
业务员自荐信范文
2014/04/20 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
大学生简短的自我评价
2014/09/12 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
个人批评与自我批评
2014/10/15 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
计算机实训心得体会
2016/01/14 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang