JS编程小常识很有用

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中变量是弱类型的,都懂。

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wddxwx.html