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

“`

涉及

type name effect returnType Function Object.getPrototypeOf() 获取实例的原型 Function obj.isPrototypeOf() 判断原型与实例关系 Function obj.hasOwnProperty() 判断实例属性是否存在于实例还是原型 Function Object.keys() 枚举实例中可枚举属性 Function Object.getOwnPropertyNames() 枚举实例中所有属性 Descriptor delete 删除属性 Boolern Descriptor in 判断属性是否存在类中 Descriptor instanceof 判断实例与类的关系 Propety constructor 构造器

目录

  • privateMethod
    • safeMethod_01
    • safeMethod_02
    • safeMethod_03
    • safeMethod_04
    • singleCase
  • publicMethod
    • factoryMethod
    • constructorMethod
    • prototypeMethod
    • constructorAddPrototype
    • enstrustConstructor
  • 涉及
  • 目录

原创粉丝点击