11.命名空间,对象枚举

命名空间的作用:管理变量,防止全局污染,适用于模块化开发,闭包的变量私有化就是一个很好的处理命名空间的问题.

小技巧:

1.方法的连续调用,类同jQuery里面的连续调用:

var preson= {

    name : function(){

        console.log("name")

        return this;

    },

    age: function(){

        console.log("age");

        return this;

    },

     sex: function(){

        console.log("sex");

        return this;

    },

}

preson.name().age().sex();

2.属性表示方法obj.prop--> obj['prop']在浏览器内部会有这样子隐式的转换

用在属性拼接,比如on+click on+mousedown

var presons = {

preson1 : {name : 'xiaoxiao'},

preson2 : {name : 'dada'},

preson3 : {name : 'laolao'},

call: function(num){

    return this[ ' preson ' + num]; //注意字符串+什么都等于字符串

}

}

preson.call(1);

3.对象的枚举

for in

1.hasOwnProperty该方法用来判断这个属性是不是对象自己的,返回值是布尔值

2.in操作符,不论是原型上的属性还是对象本身具有的属性,只要存在就返回true

3.instanceof

var obj = {

name : 'xiao',

age : 18,

sex : man,

__proto__ : {

    lastName: 'sun'

}

}

for ( var key in obj){

    console.log(obj.key);   //obj.key --> obj['key']  -->undefined

    console.log(obj[key]); //打印的就是属性的值

    console.log(key); //打印的是属性名,typeof是字符串

1.hasOwnPrototype判断属不属于对象本身,一般用来过滤,得到不是原型上的属性

    if(obj.hasOwnPrototype(key)){

        console.log(obj[key]);

    }

}

2.in 不管是对象本身还是原型链上的,只要有就遍历

"sex" in obj -->true

"lastNme" in obj -->true

3.instanceof的用法

A  instanceof B 官方解释用来判断A对象是不是构造函数B构造出来的,但是当打印下列结果,会发现很牵强,这样的说法,所以,真正来说应该是:看A对象的原型链上有没有B的原型

function Preson(){}

var preson = new Preson();

preson instanceof Preson -->true -->显然原型链第一个就是Preson

但是preson instanceof Object -->true --> 原型链末端就是Object

[] instanceof Array -->true

[] instanceof Object -->true

所以如何区分一个变量是数组还是对象的方法有:

var arr = [];

var obj = {};

arr.constuctor-->function Array(){}

obj.constuctor -->function Object(){}

arr instanceof Array -->true

obj instanceof Array -->fales

Object.prototype.toString.call([])-->"[Object Array]"

Object.prototype.toString.call(123)-->"[Object Number]"

Object.prototype.toString = function(){

//识别this,但是当toString的点前面的对象调用该方法时,这个this就指向这个点前面的对象

//返回识别的结果

}

var obj = {}

obj.toString();

所以上面的通过call改变了this的指向.从而判断对象类型.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,419评论 2 17
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,751评论 0 13
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,623评论 1 10
  • 如何控制alert中的换行?\n alert(“p\np”); 请编写一个JavaScript函数 parseQu...
    heyunqiang99阅读 4,746评论 0 6
  • 时常觉得,生活里有趣的人实在是太少太少了。有趣的人呢,首先要有自己的嗜好,有打发大把闲暇时光的熨帖的活动。在冬日的...
    Sakura阅读 1,207评论 0 1

友情链接更多精彩内容