1. 命名空间
作用:管理变量,防止污染全局,适用于模块化开发
下面是以前的用法:不过太麻烦了,每个人分工网页的一点东西,最后整合,
通俗点说:每个人都在相同的对象里,再以自己部门自己名字命名另一个对象
用的时候在设个变量,要不然超级麻烦,每次引用都要写:org.department1.jicheng
现在的用法:形成闭包,不污染全局变量,return作为一个接口连接上面的函数
init初始化的作用,入口函数
2.( jQuery可以)实现连续调用
写成return.this方便每次调用(return必须写在函数里面才作数)
理论上,默认return.undefined
3. 属性的表示方法
两种方法基本完全等同,方括号里面必须是字符串形式的,下面的例子是属性拼接 :字符串加啥都是字符串
4. 对象的枚举(遍历)
4.1 for-in循环
遍历对象,知道对象里的每个属性值是啥
引入for-in循环:单独给对象设一个循环,用来遍历对象用的,通过对象的属性个数来控制循环圈数(prop在这个obj里面有几个就循环多少圈)
obj固定(obj就是你想要遍历的对象,你想遍历谁就in谁),prop可以随便换名字
重点:属性知道了,就知道属性值了,但是下面打印的结果是5个undefined,obj.prop--->obj['prop']
相当于系统认为你让访问prop这个属性,不会把prop当成变量了,就变成一个定量了
应该改成下面图2的样子
这么写prop还是个变量,每次还能代表不同的字符串,把不同字符串塞到里面去就代表了不同属性,在枚举里面访问属性只能这么写,别的地方访问属性可以用.
例2: ++ /var key in obj1;可以简写:把key提出去
4.2 hasOwnProperty(过滤性方法)
遍历的时候不想拿出来原型的属性,判断这个属性是自己的还是原型的,里面的参数把属性名的字符串形式传进去
if里面返回的是布尔值,true就是自己的属性打印,不是就不打印false
4.3 in操作符(使用率较低)
看这个属性是否是这个对象的,是的话返回true,不是返回false
属性要加引号变成字符串形式,直接写height叫做变量
但是,不分青红皂白,你的也是你的,你父级的也是你的(只能判断你能不能在这个对象上调用到这个属性,原型的都算进去了)
4.4 instanceof(重点)
根本的语法理解:
如何区分对象{}和数组[]:引用{}之前,先让var obj = {};
法一:数组的constructor是array:
对象的constructor是object:
法二:数组是array构造出来的,对象不是
法三:toString是为了处理前面调用者的,返回特定的字符串格式
例:如果是对象调用的(obj.toString),this指向的就是前面的对象
this:谁调用toString this就指向谁
call后面的[]数组替换this,就变成识别数组来返回结果
上面的例子:第一个是数组,第三个是对象,能区分开,返回的字符串类型不一样