/**
* hasOwnProperty:判断是不是对象自身的属性
* constructor:查看对象的构造函数
* 每个原型都会自动添加constructor属性
* for in的时候有些属性是找不到的
* 避免修改constructor属性
* instanceof 运算符
* 对象与构造函数在原型链上是否有关系
* toString() object方法
*/
//hasOwnPrototype测试
var arr = [];
arr.num = 10;
Array.prototype.num = 20;
alert(arr.hasOwnProperty("num")); //true
alert(arr.hasOwnProperty("num2")); //false
//constructor
function arr2(){
}
var a = new arr2();
alert(a.constructor); //arr2
var arr3 = [];
alert(arr3.constructor == Array); //true
// constructor由来
function arr4(){
}
arr4.prototype.constructor = arr4; //相当于程序默认生成! 每一个函数都会有的都是自动生成
var a2 = new arr4();
alert(a2.constructor); //arr4;
// 修正constructor1
function arr5(){
}
arr5.prototype.name = "owl";
arr5.prototype.age = "20";
var a3 = new arr5();
alert(a3.constructor); //arr5
// 修正constructor2
function arr6(){
}
arr6.prototype = { //相当于赋值
// constructor : arr6, //修正赋值后a4.constructor 为arr6
name : "owl",
age : "20"
}
var a4 = new arr6();
alert(a4.constructor); //object
//instanceof测试
function arr7(){
}
var a7 = new arr7;
alert(a7 instanceof arr7); //true判断是否在同一个原型链上
alert(a7 instanceof Array); //判断是否为数组
// toString测试:系统下的都是自带的,自己写的都是通过原型链找object下面的
// toString() :把对象转为字符串
var arr8 = [1,2,3];
alert(arr8.toString()); //1,2,3
var arr9 = 255;
alert(arr9.toString()); //FF转为16进制
//利用toString做类型判断
var arr9 = [];
alert(Object.prototype.toString.call(arr9) == '[object Aarray]'); //object Array 判断数组的最完美方法
javascript 面向对象基础(三)面向对象的常用属性和方法
最新推荐文章于 2025-03-02 17:53:06 发布