/***我是分割线 的开始***/ //利用prototype属性可以添加公有属性和方法 function myConstructor2(){ this.a=‘大灰狼‘; }; //声明构造函数,可以使用对象字面量语法来向prototype属性中添加所有公有成员 myConstructor2.prototype={ propertyA: ‘sha‘ , propertyB: ‘feng‘ , methodA:function(){ alert(this.propertyA); }, methodB:function(){} } var myconstrustor=new myConstructor2(); //声明对象 //alert(myconstrustor.methodA()); var myconstrustor1=new myConstructor2(); //声明对象 var myconstrustor2=new myConstructor2(); //声明对象 alert("原型类测试结果="+(myconstrustor1.propertyB === myconstrustor2.propertyB)); alert("构造函数测试结果="+(myconstrustor1.a === myConstructor2.a)); /***我是分割线 的结束***/ function member(name, sex) { this.name = name; this.sex = sex; this.display = display; } function display() { var str = this.name + "是" + this.sex; document.write("<LI>" + str); } var papa = new member("杨宏文", "男生"); var mama = new member("黄雅玲", "女生"); var doggy = new member("奇 奇", "宠物狗"); papa.display(); mama.display(); doggy.display(); /**/
总结
4.可以总结出几条规律:
1:当实例本身定义了属性,使用本身属性(可以使用hasOwnProperty进行判断);2:如果实例本身没有定义,就到构造函数中去找;
3:如果构造函数也没有,就到构造函数的prototype的实例对象上去找;
4:如果prototype的实例对象没有,就到其构造函数去找;
5:如此重复,一直到跟对象object中,没找到就报undefined错误。