深度剖析关于Js中对象的研究
2017-10-25 13:58
477 查看
这次其实研究的对象说白了就是在js谁最大的问题。
当然不用多说了肯定是object,因为在js界流传着这么一句话, 万物皆是对象。但是真的是obj最大么?首先呢先说一下我总结的js对象的特有机制。
第一就是引用机制(这个会触发到内存地址保存机制)。
第二就是可以给予对象私有属性。
例如:
var a = {};
var b = a; //b引用a
b.c = 10; //给予b一个c的私有属性
console.log(a.c)
//10
只要js 是对象就会触发这个引用机制 例子还有 很多,再比如
var a = new String('abc');
var b = a;
b.c = 10;
console.log(a.c)
//10
而非对象的数据类型不会触发这个机制
例如
a = ‘abc’;
a.b = 10;
console.log(a.b);
//undefined;
当然咱们要说的 js 中谁最大? 其实争论点 就是window 还有object
因为 有着么一种说法 js 中最大的对象 是 window
那好 这么说的话 其实就是 对象大于window window是属于 对象里面的。
而其实 Object 原型 当然不光是obj 所有的 数据[Array,Number...]原型都是 寄存于 window 下面的
console.log(window.Object)
//function Object() { [native code] }
在例如
'Object' in window
//true
其实着么看来 似乎是 window 略占上风,因为 obj 是寄存于window 环境下
而
typeof window
//'Object'
window instanceof 'Object'
true
而js 又告诉咱们 window 是一个对象 而 window的这个实例的父级 又是 Object。window的父级是obj?蒙圈了...
而换一种思路方法的话
Object.prototype.a = 10;
window.a;
//10;
一旦给对象加上原型链的话,window也有了这个私有属性,那么window还是属于Object的
而
window.Object = null;
new Object();
//报错
一旦把window 下面的 obj给回收的话 那么 声明一个对象直接报错,那么这下window 又扳回一局,obj似乎还是要听window的。
感觉就像 一个将军下面的小兵 但是 这个将军又得听小兵的 但是小兵离开将军就立刻死了。那么将军大?还是小兵大?你说谁大吧?
似乎这场战役 还是一个持久战
继续换思路
window.constructor
//function
Object.constructor
//function
原来他们创建该对象的引用 还都是function 当然这也是 可以说明 function为什么也是数据类型之一的解释
当然在js 中null 几乎可以回收任何数据原型,而唯独没法回收就是window,而原型Object可以轻松被回收。
其实最后总结可见window 还是最大的。而window有个object的原型.而window 本身就是自己身上定义的原型,也就说window写了个标签也给自己贴身上了。
也就是说与其说万物皆是对象的话,更合理的说法其实js中所有的东西都是window的.
胡扯了半天,其实这个结论大家都知道啊....毛线‘深度‘阿...
不加‘深度‘你们会进来么?
当然不用多说了肯定是object,因为在js界流传着这么一句话, 万物皆是对象。但是真的是obj最大么?首先呢先说一下我总结的js对象的特有机制。
第一就是引用机制(这个会触发到内存地址保存机制)。
第二就是可以给予对象私有属性。
例如:
var a = {};
var b = a; //b引用a
b.c = 10; //给予b一个c的私有属性
console.log(a.c)
//10
只要js 是对象就会触发这个引用机制 例子还有 很多,再比如
var a = new String('abc');
var b = a;
b.c = 10;
console.log(a.c)
//10
而非对象的数据类型不会触发这个机制
例如
a = ‘abc’;
a.b = 10;
console.log(a.b);
//undefined;
当然咱们要说的 js 中谁最大? 其实争论点 就是window 还有object
因为 有着么一种说法 js 中最大的对象 是 window
那好 这么说的话 其实就是 对象大于window window是属于 对象里面的。
而其实 Object 原型 当然不光是obj 所有的 数据[Array,Number...]原型都是 寄存于 window 下面的
console.log(window.Object)
//function Object() { [native code] }
在例如
'Object' in window
//true
其实着么看来 似乎是 window 略占上风,因为 obj 是寄存于window 环境下
而
typeof window
//'Object'
window instanceof 'Object'
true
而js 又告诉咱们 window 是一个对象 而 window的这个实例的父级 又是 Object。window的父级是obj?蒙圈了...
而换一种思路方法的话
Object.prototype.a = 10;
window.a;
//10;
一旦给对象加上原型链的话,window也有了这个私有属性,那么window还是属于Object的
而
window.Object = null;
new Object();
//报错
一旦把window 下面的 obj给回收的话 那么 声明一个对象直接报错,那么这下window 又扳回一局,obj似乎还是要听window的。
感觉就像 一个将军下面的小兵 但是 这个将军又得听小兵的 但是小兵离开将军就立刻死了。那么将军大?还是小兵大?你说谁大吧?
似乎这场战役 还是一个持久战
继续换思路
window.constructor
//function
Object.constructor
//function
原来他们创建该对象的引用 还都是function 当然这也是 可以说明 function为什么也是数据类型之一的解释
当然在js 中null 几乎可以回收任何数据原型,而唯独没法回收就是window,而原型Object可以轻松被回收。
其实最后总结可见window 还是最大的。而window有个object的原型.而window 本身就是自己身上定义的原型,也就说window写了个标签也给自己贴身上了。
也就是说与其说万物皆是对象的话,更合理的说法其实js中所有的东西都是window的.
胡扯了半天,其实这个结论大家都知道啊....毛线‘深度‘阿...
不加‘深度‘你们会进来么?
相关文章推荐
- JS面向对象深度剖析
- js1:对象的学习,构造函数,继承构造函数【使用教材:JavaScript深度剖析第2版】
- 关于Hikic.js懒加载的深度剖析
- js对象详解(JavaScript对象深度剖析,深度理解js对象)
- 003_JavaScript深度剖析之对象定义详解——北京圣思园JavaScript&jsUnit&Ajax&jQuery
- js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
- 关于as3调用js报“null为空或不是对象”错误
- js this对象研究
- JSBridge深度剖析
- JS中的对象---常用的方法研究与总结
- 深度剖析:Java POJO Bean 对象与 Web Form 表单的自动装配
- 深度剖析:Java POJO Bean 对象与 Web Form 表单的自动装配
- 用户研究:以设计师为对象的深度访谈
- 关于js获取最上层window对象的架构思路
- 深度剖析:Java POJO Bean 对象与 Web Form 表单的自动装配
- js中关于简单事件的处理与浏览器对象
- Vue.js列表渲染难点:对象中数组深度更新问题
- 【SAP HANA】关于SAP HANA中视图激活时在系统中生成对象的研究(汇总)
- 关于js中function传对象问题
- 关于原生js的一些研究