面向对象中的常用属性和方法

图片的由来看下面:

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

var arr = [];
arr.num = 10;
Array.prototype.num2 = 20;    //所有的数组对象都有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 ); //falsealert( arr.toString == Array.prototype.toString );  //true

function Aaa(){}var a1 = new Aaa();alert( a1.toString == Object.prototype.toString );  //truealert( 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
时间: 2024-10-24 17:46:36

面向对象中的常用属性和方法的相关文章

JavaScript中Number常用属性和方法

title: JavaScript中Number常用属性和方法 toc: false date: 2018-10-13 12:31:42 Number.MAX_VALUE--1.7976931348623157e+308,可表示的最大数 Number.MIN_VALUE--5e-324,可表示的最小数 toExponential(x)--把对象的值转换为指数计数法 toFixed(x)--把数字转换为字符串,x为小数点后位数 toPrecision(x)--把数字格式化为指定的长度 toStri

面向对象中的常用魔术方法

__autoload($classname);这个魔术方法与其他魔术方法不同的是,它不是在类中使用的,其他都是在类内部使用,只要在页面中用到一个类,就会自动将这个类名传给这个函数的参数.在开发中用它来自动加载类. __sleep():是在对象序列化也叫串行化时,自动调用的方法,因为对象序列化的时候serialize($object),如果类里不加这个魔术方法,会自动将类中的所有属性全部序列化,如果只想让某些属性被序列化,就要用到这个方法,这个方法返回一个由类的属性组成的数组.序列哪个属性就将那个

SVG DOM常用属性和方法介绍

将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析器所特有的.SVG支持DOM2标准. 12.2.1  文档初始化相关 evt属性 evt表示事件本身,可以通过evt获取与当前事件相关的信息,用户可以在script中定义响应函数,进行相应的处理.它与普通JavaScript脚本中的event基本相同,只不过在普通JavaScript的脚本中简写成“e”. ownerDocument属性 通过引

iPone应用开发 UIView 常用属性和方法

iPone应用程序开发 UIView常用属性和方法 常用属性 alpha 视图的透明度0.0f - 1.0f backgroundColor 视图的背景颜色 subviews 子视图的集合 hidden 视图是否隐藏 tag 视图的唯一标示符,是一个整形数据 superview 视图的父视图 multipleTouchEnabled 是否开启多点触控 userInteractionEnable 是否响应触摸事件 常用方法 - (void)removeFromSuperview; //从父视图中删

UIWebView浏览器控件常用属性与方法汇总

一.什么是UIWebView UIWebView是iOS内置的浏览器控件 系统自带的Safari浏览器就是通过UIWebView实现的 二.UIWebView常用属性和方法 UIWebView常用的加载资源的方法 - (void)loadRequest:(NSURLRequest *)request; @property(nonatomic) UIDataDetectorTypes dataDetectorTypes; // 需要进行检测的数据类型 @property(nonatomic,rea

UIView常用属性与方法/UIKit继承结构

UIView常用属性与方法 @interface UIView : UIResponder<NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem> /** * 通过一个frame来初始化一个UI控件 */ - (id)initWithFrame:(CGRect)frame; // YES:能够跟用户进行交互 @property(nonatomic,getter=isUserInteractionEnabled) BOOL us

C#中gridView常用属性和技巧介绍

1.隐藏最上面的GroupPanel gridView1.OptionsView.ShowGroupPanel=false; 2.得到当前选定记录某字段的值 sValue=Table.Rows[gridView1.FocusedRowHandle][FieldName].ToString(); 3.数据只读 gridView1.OptionsBehavior.Editable=false; 4.不显示MasterDetailView gridView1.OptionsDetail.EnableM

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

Node.js是常用的Javascript运行环境,本文和大家发分享的主要是Node.js中process 模块的常用属性和方法,希望通过本文的分享,对大家学习Node.js http://www.maiziedu.com/course/694/有所帮助. 如果不是和命令行工具打交道,可能我们很少有机会去用到process模块中的一些方法或者属性.不过如果你要做类似于webpack或者gulp等较为复杂的构建工具,由于bash界面就是和用户直接交流的工具,因此友好的输入输出,完整的提示都非常有必

js数组对象以及数组常用属性和方法

定义形式: var  arr1 = new Array(1,  5,  8,  7,  2,  10);  //定义了一个数组,其中具有6个数据 var  arr2 = new Array();                   //只是单纯地定义了一个数组(名),但没有给值(数据),即现在是空的 var  arr3 = [1,  5,  8,  7,  2,  10];  //同arr1,只是一种简写的定义法. var  arr4 = [ ];                  //同arr