bankForJS_createClass
来源:互联网 发布:惠州网络车问政平台 编辑:程序博客网 时间:2024/06/07 15:21
privateMethod
safeMethod_01
function Person(name,age,job){ var o=new Object(); o.sayName=function(){console.log(name);}; return o;}var person1=Person("zzz",18,"student");person1.sayName();//zzz
safeMethod_02
function Person(){ var name; var age; var work; this.setName=function(newName){name=newName;}; this.sayName=function(){console.log(name);};}var person1=new Person();person1.setName("zzz");person1.sayName();//zzz
safeMethod_03
(function(){ var name="zzz"; var age=18; var work="doctor"; Person=function(){}; Person.prototype.getName=function(){console.log(name);}; Person.prototype.getAge=function(){console.log(age);}; Person.prototype.getWork=function(){console.log(work);};})();var person1=new Person();person1.getName();person1.getWork();person1.getAge();
safeMethod_04
- the best
(function(){ //private var privateValue=10; var privateFun=function(){return "fun"}; //public //constructor//在内外定义效果相同 MyObject=function(){}; //var o=new Object(); //o.publicMethod=function(){...}; MyObject.prototype.publicMethod=function(){ console.log(privateValue); console.log(provateFun()); };})();
singleCase
var instance=function(){ var privateValue=10; var privateFun=function(){return "fun"}; return { getPrivateValue:function(){return privateValue;}, callPrivateFun:function(){return (privateFun());} };}();console.log(instance.getPrivateValue());console.log(instance.callPrivateFun());//增强单例块级function Person(){}var instance=function(){ var privateValue=10; var privateFun=function(){return "fun"}; var obj=new Person(); obj.getPrivateValue=function(){return privateValue;}; obj.callPrivateFun=function(){return (privateFun());} return obj;}();console.log(instance.getPrivateValue());console.log(instance.callPrivateFun());
publicMethod
factoryMethod
function createClass(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){alert(this.name)}; return o;}//testvar instance=createClass("zzz",18,"student");console.log(instance.name);console.log(instance.age);console.log(instance.job);instance.sayName();
constructorMethod
- the best
function Person(name,age,job){ this.name=name; this.age=age; this.job=job; this.sayName=function(){alert(this.name)};}//var person1=new Person("zzz",18,"student");var person2=new Person("bbb",19,"student");console.log(person1.constructor==Person);//trueconsole.log(person1 instanceof Object);//trueconsole.log(person1 instanceof Person);//trueconsole.log(person1.sayName==person2.sayName);//false
prototypeMethod
function Person(){}Person.prototype.name="zzz";Person.prototype.age=18;Person.prototype.job="student";Person.prototype.sayName=function(){alert(this.name);};//var person1=new Person();var person2=new Person();console.log(person1.sayName==person2.sayName);//true//constructor才有prototype属性,class才有__proto__属性//获取原型console.log(Person.prototype==Object.getPrototypeOf(person1));//trueconsole.log(Person.prototype==person1.__proto__);//true(Firefox,Safari,Chrome)//获取原型的构造器console.log(Person==Person.prototype.constructor);//trueconsole.log(Person==person1.constructor);//true//获取原型的原型console.log(Object.prototype==Object.getPrototypeOf(Person.prototype));//trueconsole.log(Object.prototype==Person.prototype.__proto__);//true(Firefox,Safari,Chrome)//获取原型的原型的构造器console.log(Object==Person.prototype.__proto__.constructor);//trueconsole.log(Object==Object.getPrototypeOf(Person.prototype).constructor);//true//判断原型关系console.log(Person.prototype.isPrototypeOf(person1));//trueconsole.log(Object.prototype.isPrototypeOf(person1));//true//实例覆盖原型//检测是否存在实例中//in操作符function hasOwnPrototypeProperty(obj,name){ console.log(!obj.hasOwnProperty("name") && (name in obj));}person1.name="bbb";console.log(person1.name);//bbbhasOwnPrototypeProperty(person1,"name");//falsedelete person1.name;console.log(person1.name);//zzzhasOwnPrototypeProperty(person1,"name");//true//枚举方法//for-invar arr=new Array();for(var prop in person1){ arr.push(prop);}console.log(arr);//Object.keys();var keys;keys=Object.keys(person1);console.log(keys);keys=Object.keys(Person.prototype);console.log(keys);//Object.getOwnPropertyNames()var keys;keys=Object.getOwnPropertyNames(person1);console.log(keys);keys=Object.getOwnPropertyNames(Person.prototype);console.log(keys);//重写原型//单个重写Person.prototype.name="ddd";console.log(person1.name);//ddddelete person1.name;//全部重写Person.prototype={ name:"ccc", age:30, job:"doctor", sayName:function(){alert(this.name);}};Object.defineProperty(Person.prototype,"constructor",{ enumerable:false, value:Person});console.log(person1.name);//zzzvar person3=new Person();console.log(person3.name);//ccc//继续修改Person1的原型Object.getPrototypeOf(person1).name="xxx";console.log(person1.name);//xxx
constructorAddPrototype
function Person(name,age,job){ this.name=name; this.age=age; this.job=job; this.friends=["A","B"];}Person.prototype={ sayName:function(){alert(this.name)}};Object.defineProperty(Person.prototype,"constructor",{ enumerable:false, value:Person});//var person1=new Person("zzz",18,"student");var person2=new Person("bbb",30,"doctor");person1.friends.push("C");console.log(person1.friends);//A,B,Cconsole.log(person2.friends);//A,Bconsole.log(person1.friends==person2.friends);//falseconsole.log(person1.sayName==person2.sayName);//true
enstrustConstructor
function Person(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){alert(this.name);}; return o;//重写默认的"return this",constructor不设返回值则默认返回新对象的实例}var person1=new Person("zzz",18,"student");console.log(person1.name);//zzz
“`
涉及
目录
- privateMethod
- safeMethod_01
- safeMethod_02
- safeMethod_03
- safeMethod_04
- singleCase
- publicMethod
- factoryMethod
- constructorMethod
- prototypeMethod
- constructorAddPrototype
- enstrustConstructor
- 涉及
- 目录
阅读全文
0 0
- bankForJS_createClass
- Linux(一)基本知识点
- http协议传输图片
- C#获取ip地址、dns、mac地址、cpu信息
- Consul 删除无效的服务或多实例下的无效节点
- 联币网与7宝网达成战略合作,未来是数字资产时代
- bankForJS_createClass
- 补码理解
- 83. Remove Duplicates from Sorted List
- 2017/8/30工作总结
- 未解决问题
- 在vim中使用shell命令的方法以及foreach循环的使用.
- Find The Determinant III SPOJ
- Guess Next Session
- MySQl启动异常:net start mysql 服务名无效