zoukankan      html  css  js  c++  java
  • 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()     

  • 相关阅读:
    perl 获取铜板街页码
    $response->decoded_content 和$response->content
    基于Netty5.0高级案例之请求响应同步通信
    [Err] 1091
    [Err] 23000
    [Err] 42000
    perl 爬取 find_by_tag_name
    perl 爬取html findvalues 方法
    perl 安装DBI和DBD
    js setTimeout 参数传递使用介绍
  • 原文地址:https://www.cnblogs.com/dunken/p/4083168.html
Copyright © 2011-2022 走看看