js基础知识

1、js数据类型:原始类型(数字,字符串,布尔值,null,undefined),对象类型(日期,正则,数组,函数)。

2、js中字符串是不可改变的。数组和对象时可变的。

3、js中变量时无类型的,用var声明。一个变量可以赋予不同的值。

4、js中无穷大用Infinity -Infinity表示。

5、js不区分整形 和浮点型,都按浮点型算。

6、js中的算术运算。Math.pow round min max sqrt sin log ceil  floor abs  PI E exp() radom 

7、Math.round()//四舍五入  Math.ceil()//向上求整  Math.floor()//向下求整

8、js中原始值的比较是值的比较,而对象则不是,两个不同的对象永不相等(尽管属性和值相等)。

9、仅当两个对象引用同一个基对象时,其才相等。

10、对象转换为字符串:toString()和valueOf()方法

11、js中变量作用域:

  js中变量的作用域是函数式的(c语言是块级作用域)。全局变量是指不在任何函数内声明的变量。

  全局变量声明时,可以不用var,但局部变量必须要用var。

  js中未用var声明的都是全局变量,视为全局对象的属性。

  js中函数的声明可以嵌套;

  js在函数内声明的变量在整个函数体内都可用,并且在声明之前也可用。这叫声明提前。

  js中的作用域链:创建时由里到外(直到全局对象)。

12、===严格相等,用于检验两个操作数是否严格相等。 对应!=

  ==用来检验两个操作数是否相等,允许类型转换 对应  !==

13、js中字符串的比较是字符的比较。区分大小写,并按照Unicode编码的大小比较。所以所有大写字母小于小写字母。

      “11”<3 flase  等价于11》3   “11”《"3" true 等价于字符串的比较。

14、in运算符左边是字符串或可以转换为字符串的值,右边是对象如:a=[1,2,3] "0" in a true   0 in a true  3in a false

  instanceof左边是对象,右边是对象的类(如:number object  array等)

15、typeof 操作数可以使任意类型。返回”string“ function undefined object number boolen等

16、delete云算法:delete a[2]  delete o.x

17、js 对象属性的特性:可写,可枚举,可配置。

  js对象的属性可以动态添加。

18、delete只能删除自有属性,而不能删除继承属性,要想删除必须在其原型上操作,

  delete只是断开了属性和对象的关系,并不会删除属性中的属性。所以在销毁对象时要遍历属性中的属性,并全部删除。以免内存泄露。

  delete o.x

20、js中检查属性的方法:

  “x” in o

      o.hasOwnProperty("x");

  Object.prototype.propertyIsEnumerable("toString")//false tosting方法不可枚举

21、in运算符用来检测对象是否存在该属性,“tostring” in object;true

  for in 语句用来遍历所有可枚举属性,而内置属性不可遍历tostring。

for in语句可以遍历继承和自有属性中所有可枚举的。
22、类似,ecmascript5有两个类似方法:

  Object.keys[]//返回对象可枚举的自有属性的数组

  Object.getOwnPropertyName()//返回所偶自有属性包括不可枚举的

  而forin中可以遍历继承属性。

23、关于ecmascript5中的新特性:

  1、ecmascript5提供了setter、getter方法来代替属性。存取器属性也是可以继承的。

      var o={x:1,y:1

        set r(x,y){this.x=x;this.y=y},}

  2、ecmascript3中程序员创建的属性都是可写,枚举,配置的

    ecmascript5提供了新的方法来修改:

    ecmascript5中将对象的属性包括一个名字和四个特性(值,可写,可枚举,可配置)

  存取器属性的四个特性包括(get,set,可枚举,可配置)。

  ecmascript5提供Object.getOwnPropertyDescriptor(o,“x”)获取属性的描述符:{Value:1,writeable:true,..}

这个方法对继承属性和不存在的属性返回undefined。

   ecmascript5同时提供Object.defineProperty(o,"x",{value:1,writable:true,enumerable:false,configurable,})来对对象的自有属性进行修改。同时修改多个属性用:

Object.defineProperties(o,{});

 24、对象的三个属性:

  原型属性,  Object.getPrototypeOf()   ecmascript5中

        o.constructor.prototype

        isPrototypeOf(o)用来检测是否是o的原型

  类属性:Object.prototype.toString.call(o).slice(8,-1);

  可扩展性:主要是指是否可以给对象添加新属性。

25、ecmascript5序列化对象是指将对象化为字符串和还原。

  JSON.stringify  JSON.parse()     

原文地址:https://www.cnblogs.com/dunken/p/4083168.html