Home  >  Article  >  Web Front-end  >  The use of javascript static objects and constructors and public and private issues_javascript skills

The use of javascript static objects and constructors and public and private issues_javascript skills

WBOY
WBOYOriginal
2016-05-16 18:33:391123browse

Take a look first:

Copy code The code is as follows:

var objJson={
 op1: 'objJson option1',
fn1:function(){
alert(this.op1)
}
}

With this form of declaration, you can There is no problem in directly accessing internal properties through objJson.op1 or objJson.fn1(). But if this is the case:
Copy code The code is as follows:

var objFn=function(){
this.op1='objFn.op1';
this.op2=function(){
alert(this.op1)
};
}

Then if you access the internal properties directly with objFn.op1 or objFn.op2(), it won't work, because it is not an object at this time.
So we need to instantiate him
Copy the code The code is as follows:

var inst =new objFn();
alert(inst.op1);
inst.op2();

This way you can get the value you want.
If you want to copy an object in JSON form, it is very simple, but there is a problem:
Copy code The code is as follows:

var newone=objJson;
newone.op1='changed';
alert('objJson.op1');

You will find the original The value of op1 in the object has also changed. But if the second method of object declaration is used, the modification is only within the instance and will not affect other instances.
So static objects like JSON are suitable for use when writing some commonly used libraries. They have their own namespace, so no one will interfere with others, and they are easy to use.
The "public" and "private" attributes of the constructor
We will make a modification to the above constructor:
Copy code The code is as follows:

var objFn=function(){
var pri1='private variable';
this.op1='public variable';
this.op2 =function(){
  alert(pri1 ',' this.op1);
 };
};
var o=new objFn();
alert(typeof o.pri1 ' ,' typeof o.op1);//undefined, string
o.op2();//Private variables, public variables

Private variables are not allowed to be accessed outside the object, all After typeof, it is undefined. Let's take a look at the access to private methods:
Copy code The code is as follows:

var objFn= function(){
var pri1='Private variable';
var pri2=function(){
this.op2();
};
 this.op1='Public variable' ;
this.op2=function(){
alert(pri1 ',' this.op1);
};
this.acPri=function(){
pri2.call(this );
 };
};
var o=new objFn();
o.acPri();//Private variables, public variables

Note Because of the closure feature of JavaScript, when we call the private method pri2 through the public method acPri(), we need to use call to pass the context of the program in. However, this seems to be too confusing, so we can wrap it up a little:
Copy code The code is as follows:

var objFn=function(){
var my =this;
var pri1='Private variable';
var pri2=function(){
my.op2();
};
 this.op1='Public variable';
this.op2=function(){
alert(pri1 ',' this.op1);
};
this.acPri=function(){
pri2.();
 };
};
var o=new objFn();
o.acPri();//Private variables, public variables

Of course the final result is still constant.
Please keep the following information when reprinting
Author: Beiyu (tw:@rehawk)
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn