//测试Chrome版本 40.0.2214.115 m //如有错误欢迎指出 //isPlainObject才是重点 //下面的一些方法前面都做了分析 //如有不懂可以看下我以前对这些方法的说明 var toString={}.toString; var class2type={}; var hasOwn={}.hasOwnProperty; var isArray=Array.isArray; var indexOf=[].indexOf; var each=function(obj,callback){ var value, length=obj.length, i=0, isArray=isArrayLike(obj); //两种情况 //类数组 if(isArray){ for(;i<length;i++){ //若是返回false,则直接跳出 value=callback.call(obj,i,obj[i]); if(value===false){ break; } } }else{ for(i in obj){ value=callback.call(obj,i,obj[i]); if(value===false){ break; } } } return obj; }; //第二个判断是否像数组一样的对象 var isArrayLike=function(obj){ var length=obj.length; //判断为空 if(obj==null){ return false; } if(type(obj)==="object" ||typeof(obj)==="function"){ return false; } return type(obj)==="array" ||length===0 || (length>0 &&(length-1) in obj); }; //第三个判断类型 var type=function(obj){ //排除为空的 if(obj==null){ return obj+""; } //做判断,如果是object或者function类型的时候 //不是执行后面 return typeof obj==="object" ||typeof obj==="function" ? class2type[toString.call(obj)] : typeof obj; }; each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(_,name){ class2type["[object "+name+"]"]=name.toLowerCase(); }); var isFunction=function(obj){ return type(obj); }; var isWindow=function(obj){ return obj!==null && obj.window===window; }; //本次重点来了 //字面量对象判断 //判断之前做一个测试,形如 {} var isPlainObject=function(obj){ //第一判断,如果不是object类型直接返回false //第二判断是否是节点类型 //第三window if(type(obj)!=="object" ||obj.nodeType||isWindow(obj)){ return false; } //当是{}或者是new Object() 时为真,这两种是符合的 只有object对象的原型中有这个方法 if(hasOwn.call(obj.constructor.prototype,"isPrototypeOf")){ return true; } }; console.info(isPlainObject(window)); console.info(isPlainObject({})); console.info(isPlainObject(new Object())); console.info(isPlainObject(new Date())); var d=new Object(); d.namexx='fsafa'; d.xx=function(){}; var c=function(){ this.namess="xxx"; this.fas=function(){}; }; //来看下 hasOwn.call(obj.constructor.prototype,"isPrototypeOf") 这句话到底是什么东东 //首先支hasOwnProperty做个说明 hasOwnProperty: //是用来判断一个对象是否有你给出名称的属性或对象。// //此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。 console.info("c "+c.constructor); console.info("c "+c.constructor.prototype); console.info("d "+d.constructor); console.info("d "+d.constructor.prototype);//[object Object] //这个下面才有isPrototypeOf方法 console.info("{} "+{}.constructor); console.info("{} "+{}.constructor.prototype);//[object Object] console.log(d);//__proto__: Object -->isPrototypeOf: function isPrototypeOf() { [native code] } console.log(new c());//__proto__: c --->__proto__: Object constructor: function ()
相关推荐
- **概述:** 在创建DOM元素时,可以通过对象字面量形式快速定义多个属性。 - **实现原理:** 使用jQuery提供的工厂方法创建元素,并通过属性对象初始化元素的多个属性。 - **代码示例:** ```javascript var e = ...
对象可以使用字面量语法创建,如`var person = {name: "John", age: 30}`。 6. **函数表达式与闭包**:JavaScript中的函数不仅是可调用的,还可以作为值赋给变量,形成函数表达式。闭包是指函数可以访问并操作其...
- ES6 允许直接在对象字面量中使用变量名作为属性名。 - 示例: ```javascript const name = 'Alice'; const person = {name}; console.log(person); // 输出 {name: 'Alice'} ``` 6. **对象的解构和析构** ...
4. 对象:JavaScript中的对象是以键值对形式存储的数据结构,可以通过字面量语法或构造函数创建。原型链是实现继承的核心机制。 5. 数组:JavaScript数组是一种特殊的对象,可以存储多个值。数组方法如push、pop、...
晋城市-晋城市-街道行政区划_140500_Shp数据-wgs84坐标系.rar
内容概要:本文档汇总了46个经典的Linux面试题及其答案,涵盖了Linux系统操作的基本命令和概念。内容涉及路径表示与目录切换、进程管理、文件和目录操作、权限设置、文件内容查看等多个方面。每个问题都给出了明确的答案,旨在帮助面试者全面掌握Linux命令行操作技能,同时加深对Linux系统原理的理解。 适合人群:准备Linux相关职位面试的求职者,尤其是有一定Linux基础但缺乏实战经验的技术人员。 使用场景及目标:①用于个人自学或面试前复习,巩固Linux基础知识;②作为企业内部培训资料,帮助员工提升Linux操作水平;③为初学者提供系统化的学习指南,快速入门Linux命令行操作。 其他说明:文档内容侧重于实际操作命令的讲解,对于每个命令不仅提供了基本语法,还解释了具体应用场景,有助于读者更好地理解和记忆。建议读者在学习过程中多加练习,将理论知识转化为实际操作能力。
街道级行政区划shp数据,wgs84坐标系,直接下载使用。
内容概要:本文提供了10道华中杯C++竞赛真题的详细解析,涵盖多种基础编程技能与高级特性。每道题目不仅包含详细的解题思路和代码实现,还附带了完整的运行结果。具体包括:函数参数传递(指针实现)、宏定义比较、数组元素打印、几何图形面积计算、字符串拼接、素数判断、多态的实现、文件操作、简单计算器和学生信息管理。这些题目帮助读者深入理解C++语言的核心概念和技术应用。 适合人群:对C++有一定了解的编程初学者和中级开发者,尤其是准备参加编程竞赛的学生或程序员。 使用场景及目标:①作为编程练习和竞赛备考资料,帮助读者掌握C++的基本语法和常用算法;②通过实际代码示例加深对C++特性的理解,如指针、宏定义、面向对象编程等;③提供完整的源码供读者参考和调试,增强动手能力和问题解决能力。 阅读建议:建议读者按照题目难度逐步学习,先理解题目背景和解题思路,再仔细研读代码实现,并尝试独立编写和调试代码。同时,鼓励读者扩展思考,探索更多可能的解决方案,以提高编程水平。
街道级行政区划shp数据,wgs84坐标系,直接使用。
街道级行政区划shp数据,wgs84坐标系,直接使用。
通用计算器的设计FPGA.doc
晋城市-沁水县-街道行政区划_140521_Shp数据-wgs84坐标系.rar
赤峰市-松山区-街道行政区划_150404_Shp数据-wgs84坐标系.rar
JAVA中Stream编程常见的方法分类
街道级行政区划shp数据,wgs84坐标系,直接使用。
大同市-浑源县-街道行政区划_140225_Shp数据-wgs84坐标系.rar
包头市-昆都仑区-街道行政区划_150203_Shp数据-wgs84坐标系.rar
街道级行政区划shp矢量数据,wgs84坐标系,下载直接使用
街道级行政区划shp数据,wgs84坐标系,直接下载使用。