图片的由来看下面:

1、hasOwnProperty:看是不是对象自身下面的属性

var arr = [];
arr.num = ;
Array.prototype.num2 = ; //所有的数组对象都有num2,并不只是arr自身的属性 //alert( arr.hasOwnProperty('num') ); //true alert( arr.hasOwnProperty('num2') ); //false

2、constructor: 查看对象的构造函数,每个原型都会自动生成它,避免修改它。

function Aaa(){
} var a1 = new Aaa(); alert( a1.constructor ); //Aaa

这是我们自定义对象,然后弹出来了Aaa。下面我们可以试试Array的。

var arr = [];
alert( arr.constructor); //Array

因此可以使用一种方式去判断是否是数组。arr.constructor == Array 为true,或者其他类型的也可以。

而constructor是每个函数都有的,构造函数只会生成这个constructor。我们也可以通过 构造函数.prototype.construstor去修改它,当然最好少修改。

function Aaa(){
}
//Aaa.prototype.constructor = Aaa; //每一个函数都会有的,都是自动生成的
Aaa.prototype.constructor = Array;
var a1 = new Aaa();
alert(a1.constructor) //Array

可想而知,constructor是在构造函数的原型下面,但是hasOwnProperty是在object原型下的

 function Aaa(){
}
var a1 = new Aaa();
alert(a1.constructor == Aaa.prototype.constructor); //true;
alert(a1.hasOwnProperty == Object.prototype.hasOwnProperty); //true

3、instance:对象与构造函数在原型链上是否有关系

function Aaa(){
} var a1 = new Aaa();
//alert( a1 instanceof Aaa); //true
//alert( a1 instanceof Object ); //true
//alert( a1 instanceof Array ); //false var arr = [];
alert( arr instanceof Array ); //true

因此又有一种判断是否是数组的方法:arr instanceof Array

4、toString

咱先想想它究竟在哪儿?

//toString() : 系统对象下面都是自带的(例如下面就在Array.prototype) , 自己写的对象都是通过原型链找object下面的(例如是是Object.prototype.toString)
var arr = [];
alert( arr.toString == Object.prototype.toString ); //false
alert( arr.toString == Array.prototype.toString ); //true function Aaa(){
}
var a1 = new Aaa();
alert( a1.toString == Object.prototype.toString ); //true
alert( a1.toString == Array.prototype.toString ); //false

既然知道它具体在哪儿了,那我们要改造它的方法自然是可以的。toString是将对象转成字符串,但是我们想换一种转换方式。

/*var arr = [1,2,3];

Array.prototype.toString = function(){
return this.join('+');
}; alert( arr.toString() ); //'1+2+3'*/

也可以用toString进制转换,例如toString(16)  转换成16进制的。

接下来的重点来了,判断是否是数组的最好的方法:Object.prototype.toString.call(arr) == '[object Array]'

/*var arr = [];

alert( Object.prototype.toString.call(arr) == '[object Array]' ); */ //'[object Array]'
 var arr = {};
alert( Object.prototype.toString.call(arr)); // object object var arr = new Date;
alert( Object.prototype.toString.call(arr)); // object Date var arr = new RegExp();
alert( Object.prototype.toString.call(arr)); // object RegExp

JS面向对象组件(三)--面向对象中的常用属性和方法的更多相关文章

  1. JavaScript中Number常用属性和方法

    title: JavaScript中Number常用属性和方法 toc: false date: 2018-10-13 12:31:42 Number.MAX_VALUE--1.79769313486 ...

  2. Node.js process 模块常用属性和方法

    Node.js是常用的Javascript运行环境,本文和大家发分享的主要是Node.js中process 模块的常用属性和方法,希望通过本文的分享,对大家学习Node.js http://www.m ...

  3. DataGrid中的常用属性

    DataGrid中的常用属性 $('#dg').datagrid({ url:'datagrid_data.json', columns:[[ {field:'code',title:'Code',w ...

  4. Objective-C语言介绍 、 Objc与C语言 、 面向对象编程 、 类和对象 、 属性和方法 、 属性和实例变量

    1 第一个OC控制台程序 1.1 问题 Xcode是苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X,iOS的应用程序.其运行于苹果公司的Mac操作系统下. 本案例要求使用集成 ...

  5. (vue.js)axios interceptors 拦截器中添加headers 属性

    (vue.js)axios interceptors 拦截器中添加headers 属性:http://www.codes51.com/itwd/4282111.html 问题: (vue.js)axi ...

  6. (数据科学学习手札131)pandas中的常用字符串处理方法总结

    本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常开展数据分析的过程中,我们经常需要对 ...

  7. SVG DOM常用属性和方法介绍(1)

    12.2  SVG DOM常用属性和方法介绍 将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析 ...

  8. JavaScript的事件对象中的特殊属性和方法(鼠标,键盘)

    鼠标操作导致的事件对象中的特殊属性和方法 鼠标事件是 Web 上面最常用的一类事件,毕竟鼠标还是最主要的定位设备.那么通过事件对象可以获取到鼠标按钮信息和屏幕坐标获取等 鼠标按钮 只有在主鼠标按钮被单 ...

  9. 第190天:js---String常用属性和方法(最全)

    String常用属性和方法 一.string对象构造函数 /*string对象构造函数*/ console.log('字符串即对象');//字符串即对象 //传统方式 - 背后会自动将其转换成对象 / ...

随机推荐

  1. Struts2 Convention插件的使用(2)return视图以及jsp的关系

    package com.hyy.action; import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extend ...

  2. hdu 4764 Stone (巴什博弈,披着狼皮的羊,小样,以为换了身皮就不认识啦)

    今天(2013/9/28)长春站,最后一场网络赛! 3~5分钟后有队伍率先发现伪装了的签到题(博弈) 思路: 与取石头的巴什博弈对比 题目要求第一个人取数字在[1,k]间的某数x,后手取x加[1,k] ...

  3. Android核心分析之十五Android输入系统之输入路径详解

       Android用户事件输入路径 1 输入路径的一般原理 按键,鼠标消息从收集到最终将发送到焦点窗口,要经历怎样的路径,是Android GWES设计方案中需要详细考虑的问题.按键,鼠标等用户消息 ...

  4. java_String和StringBuffer区别分析

    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数值不可改变的字符串.而这个StringBuffer类提供 ...

  5. Java-马士兵设计模式学习笔记-桥接模式

    一.概述 1.桥接模式的应用情况:(1)两个维度扩展(2)排列组合 二.代码 1.Gift.java public class Gift { protected GiftImpl giftImpl; ...

  6. sql server UI怎么设置自增加id?

    设置表结构的时候,设置标识列就可以了啊 来自为知笔记(Wiz)

  7. 276. Paint Fence

    题目: There is a fence with n posts, each post can be painted with one of the k colors. You have to pa ...

  8. HDU 4622 Reincarnation 后缀自动机

    模板来源:http://blog.csdn.net/zkfzkfzkfzkfzkfzkfzk/article/details/9669747 解法参考:http://blog.csdn.net/dyx ...

  9. BZOJ 2228 礼物(gift)(最大子长方体)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2228 题意:给出一个只含有NP两种字母的长方体.从中找出只含有字母N的长方体,造型为a* ...

  10. 如何获取supersocket的源代码

    源代码的地址:https://github.com/kerryjiang/SuperSocket 安装git之后,可以使用命令行git clone https://github.com/kerryji ...