JS面向对象组件(三)--面向对象中的常用属性和方法
图片的由来看下面:
![]() |
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面向对象组件(三)--面向对象中的常用属性和方法的更多相关文章
- JavaScript中Number常用属性和方法
title: JavaScript中Number常用属性和方法 toc: false date: 2018-10-13 12:31:42 Number.MAX_VALUE--1.79769313486 ...
- Node.js process 模块常用属性和方法
Node.js是常用的Javascript运行环境,本文和大家发分享的主要是Node.js中process 模块的常用属性和方法,希望通过本文的分享,对大家学习Node.js http://www.m ...
- DataGrid中的常用属性
DataGrid中的常用属性 $('#dg').datagrid({ url:'datagrid_data.json', columns:[[ {field:'code',title:'Code',w ...
- Objective-C语言介绍 、 Objc与C语言 、 面向对象编程 、 类和对象 、 属性和方法 、 属性和实例变量
1 第一个OC控制台程序 1.1 问题 Xcode是苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X,iOS的应用程序.其运行于苹果公司的Mac操作系统下. 本案例要求使用集成 ...
- (vue.js)axios interceptors 拦截器中添加headers 属性
(vue.js)axios interceptors 拦截器中添加headers 属性:http://www.codes51.com/itwd/4282111.html 问题: (vue.js)axi ...
- (数据科学学习手札131)pandas中的常用字符串处理方法总结
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常开展数据分析的过程中,我们经常需要对 ...
- SVG DOM常用属性和方法介绍(1)
12.2 SVG DOM常用属性和方法介绍 将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析 ...
- JavaScript的事件对象中的特殊属性和方法(鼠标,键盘)
鼠标操作导致的事件对象中的特殊属性和方法 鼠标事件是 Web 上面最常用的一类事件,毕竟鼠标还是最主要的定位设备.那么通过事件对象可以获取到鼠标按钮信息和屏幕坐标获取等 鼠标按钮 只有在主鼠标按钮被单 ...
- 第190天:js---String常用属性和方法(最全)
String常用属性和方法 一.string对象构造函数 /*string对象构造函数*/ console.log('字符串即对象');//字符串即对象 //传统方式 - 背后会自动将其转换成对象 / ...
随机推荐
- Codeforces Round #336 (Div. 2) D. Zuma 区间dp
D. Zuma Genos recently installed the game Zuma on his phone. In Zuma there exists a line of n gems ...
- 搭建turnserver
参考文件: http://blog.csdn.net/kl222/article/details/20145423 为什么要搭建TURN服务器? 因为我们编写的sip客户端再和南瑞的sip服务器进行通 ...
- javaScript解决Form的嵌套
HTML是不允许FORM嵌套的,用一个简单的JAVASCRIPT就可以解决问题了 <script language=javascript> function process(v){ if( ...
- 高性能MySQL笔记-第1章MySQL Architecture and History-001
1.MySQL架构图 2.事务的隔离性 事务的隔离性是specific rules for which changes are and aren’t visible inside and outsid ...
- Centos环境下部署游戏服务器-Eclipse
一直在想这篇文章该不该写,因为这篇文章更像是教你如何使用一个ide这种文章,毫无价值可言.但思来想去还是应给写.上篇文章主要说了编译原理和过程,这篇文章就是理论联系实际的典范.并且很多工程师一辈子都不 ...
- sql server UI怎么设置自增加id?
设置表结构的时候,设置标识列就可以了啊 来自为知笔记(Wiz)
- CentOS7安装配置DNS服务器
准备工作(假设名称为bigcloud.local) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #更改主机名称 #vi /etc/sysconfig/netwo ...
- 《mysql数据库备份小脚本》(转)
vim mysql.sh #!/bin/bashDAY=`date +%Y-%m-%d` //日期以年月日显示并赋予DAY变量SIZE=`du -sh /var/lib/mysql //查看mysql ...
- Entity Framework学习 - 3.关联查询
1.Inner Join(默认) var Goods = from goods in db.T_Goods join types in db.T_GoodsTyp ...
- 新环境配置与使用Vim指南
1.下载源码 git clone git@github.com:vim/vim.git 2.编译 1.安装依赖软件 sudo apt-get install libncurses5-dev libgn ...
