Web前端_JavaScript

 

1.数据类型

1.0 关键字

  • 对象:{}  属性和方法的集合(变量和function的集合),一个对象类型的实例,通过函数创建。对象都有一个__proto__属性,指向这个对象的构造函数原型对象(prototype属性)
  1. 对象的属性有权限,例如能不能被delete,可以查看
  2. 变量就是基本类型的实例, var a =1: a不能被delete  隐性申明:a=1:a可以被删除
  3. 可以在添加对象的属性时给它赋予属性
  4. 对象也拥有标签,可以通过Object来定义对象的权限:不能添加属性,不能删除修改等等
  • 类型: 对象类型和原始类型,类似于java的类
  1. 原始类型:非对象并且无方法的数据:null表示"没有对象",即该处不应该有值,undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。
  2. 对象类型:引用类型:数组,函数。。。
  • 构造函数: 和普通函数写法没区别,首字母大写,使用 new + 构造函数名(实参) 来批量创建对象,是继承的必经之路
  • 原型对象:该对象的父类,函数都有一个prototype属性,指向原型对象(原型对象在定义函数时同时被创建)
  • this
  1. 一般window对象 
  2. 在对象的函数里 指向当前对象

ps :__proto__和prototype属性的值都指向原型对象,一个是对象的属性,一个是函数的属性

1.1 === 和 ==

=== :

  1. 类型不同 返回false  类型相同
  2. 类型相同,值也相同,大部分返回 true,也有特例。

特例:   

  1. null === null //true ; unefined === undefined  //true   
  2. NaN === NaN  //false    NaN是一种特殊的number类型 ,和任何类型 === 都返回false
  3. new  Object === new Object // false    对象比较引用,除非两边是同一对象引用才会返回 true

==:

  1. 类型相同 和 === 一样
  2. 类型不同,先尝试转型,再进行比较,具体问题遇到再查询

1.2 包装对象机制

var a = “string”; 
alert(a.length);    //6
a.t = 3;
alert(a.t);        //unefined

基础类型a能够访问对象才有的a.length属性,是因为 js 给你做了一步操作:

var aa = new String(a),然后通过 aa这个临时的对象去访问属性,但是这个对象在执行完a.length会立刻销毁,所以访问a.t是unefined

1.3 类型检测:

typeof :  一个一元运算,运算数可以是任意类型。它返回值是一个字符串,该字符串说明运算数的类型。

  • 不够精细,只能返回类型,如果要获取 Array 而非 Object 则实现不了,不能判断具体引用类型,但是为什么能拿到function对象
  • 遇到null失效

instanceof : 操作符,  a instanceof  Obiect ,左边必须是对象,否则返回false。

  • 比typedef 更细,判断左边对象a的原型链(继承)的原型(父类)是否有右边这个构造函数的prototype对象属性
  • 不可以跨ifram,window对象使用
  • 简单来说就是判断该对象是哪种引用类型

Object.prototype.tostring.apply():

  • 既能判断基本类型,也能判断引用类型(对象类型)
  • 遇到Null,undefined会在IE678失效

1.4 js对象序列化

  • 将js对象转化成字符串
  1. 通过JSON.stringify(obj) 实现
  2. jequery  ajax请求 自动将对象序列化了
  3. JSON.parse('{"x":1}') 将字符串转化为json格式对象
  • js对象自定义序列化:
  1. 对象内添加toJSON函数

1.5 表达式

  • for in  遍历对象

1.6 基于浏览器的常用对象

1.6.1 window(this)

猜你喜欢

转载自blog.csdn.net/m0_37840243/article/details/89357902
今日推荐