<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>New Web Project</title>
<script type="text/javascript" charset="UTF-8">
//isPrototypeOf(new instance);判断原型的方法;
//Object.getPrototypeOf();根据实列对象获得原型对象
function Person(){
}
Person.prototype.name='z3';
Person.prototype.age=20;
Person.prototype.sayName=function(){alert('我是原型对象的方法!')};
/*
var p1=new Person();
alert(p1.name);//z3
var prototypeObj=Object.getPrototypeOf(p1);
alert(prototypeObj==Person.prototype);
*/
//
//var p2 = new Person();
// p2.name='w5';
// alert(p2.name);
//姣忔浠g爜璇诲彇涓�釜瀵硅薄鐨勫睘鎬х殑鏃跺�锛岄鍏堜細杩涜涓�鎼滅储.鎼滅储瀹炲垪瀵硅薄涓璶ame鐨勫睘鎬э紝鐪嬬湅鏈夋病鏈夈�
//濡傛灉娌℃湁锛屽啀鍘籶2鐨勫疄鍒楁墍瀵瑰簲鐨勫師鍨嬪璞¢噷鎼滅储name灞炴�锛屾湁灏辫繑鍥烇紝淇╂閮芥病鏈夎繑鍥瀠ndifind
//var p2 = new Person();
// p2.name='w5';//瀹炲垪瀵硅薄鐨刵ame
//delete p2.name;//鍒犻櫎鍘熷瀷瀵硅薄鐨刵ame銆� alert(p2.name);//鑾峰彇鍘熷瀷瀵硅薄鐨刵ame.
//
//判断一个属性是属于原型属性还是属于实列属性。
/*
var p3 = new Person();
p3.name='z6';
alert(p3.name);
alert(p3.hasOwnProperty('name'));
*/
//in操作符: for-in判断属性是否存在于实列对象和原型对象中.
var p1=new Person();
alert('name' in p1);//true
var p2=new Person();
p2.name='w3';
alert('name' in p2);//true
//就是判断一个属性是否存在原型中
//在原型对象中,是否存在这个属性:第一个参数,当前对象,第二个参数:要判断的属性
/*
function hasPrototypeProperty(Object,name){
return object.hasOwnProperty(name) && name in object ;
}
var p3 = new Person();
p3.name='xiao A';
alert(asOwnProperty(p3,'name'));
*/
//ECMA5新特性 Object.keys();
//拿到当前对象里的所有keys,返回一个数组。
var p1=new Person();
p1.name='z3';
p1.age=20;
var attribute=Object.keys(p1);
alert(attribute);
var attribute2=Object.keys(Person.prototype);
alert(attribute2);
//ECMA5 constructor属性,该属性是不能被枚举的[enable=false]。
//Object.getOwnPropertyNames 枚举对象的所有属性,不管该内部属性能否被枚举。
var attribute3=Object.getOwnPropertyNames(Person.prototype);
alert(attribute3);
</script>
</head>
<body>
<h1>New Web Project Page</h1>
</body>
JavaScript_01面向对象程序设计(原型【三】)常用方法
最新推荐文章于 2023-10-24 20:08:39 发布