Home >Web Front-end >JS Tutorial >javascript Prototype object extension_javascript skills

javascript Prototype object extension_javascript skills

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-05-16 18:53:061038browse

Javascript is of course no exception, but have you ever considered the issue of object references? The usual approach is for a series of objects to share the methods of a class, rather than duplicating a function for each object. Let's look at how to copy a function for each object.

Copy code The code is as follows:

var myobject=function(param1,param2)
{
this.name=param1;
this.age=param2;
this.showmsg=function()
{
alert("name:" this.name "n" "age :" this.age);
}
}
var objectone=new myobject('liu',20);
alert(objectone.name); //liu
var objecttwo= new myobject('lin',20);
alert(objecttwo.name); //lin
alert(objecttwo.showmsg());
var objectthree=new myobject('lhking',22) ;
alert(objectthree.showmsg());

It looks good and works well. There is no interference between the objects and the work can be completed normally. Everything seems natural. But every time you generate a new object, the script engine will copy the properties and methods to the object. Do you think this is a waste of memory? This method of copying objects on the client side is extremely easy to cause memory leaks, because every time a new instance is generated, all properties and methods will be copied, occupying a large amount of memory.
The first consideration in large JavaScript applications is memory issues.
The correct way to use it is to use the prototype keyword to define a method or attribute of a class
Copy the code The code is as follows:

var myobject=function(param1,param2)
{
this.name=param1;
this.age=param2;
myobject.prototype.showmsg=function( )
{
alert("name:" this.name "n" "age:" this.age);
}
}
var objectone=new myobject('liu', 20);
alert(objectone.name);
var objecttwo=new myobject('lin',20);
alert(objecttwo.name);
alert(objecttwo.showmsg()) ;
var objectthree=new myobject('lhking',22);
alert(objectthree.showmsg);

In this case, the objects you create can share methods, and That is, the showmsg() function is only defined once, and other objects share this method instead of copying their own methods.
The prototype in Javascript has been finished.

Look at object expansion in JavaScript
Copy the code The code is as follows:

function rand(x)
{
return Math.ceil(Math.random()*x);
}
An extension method to generate a random array
Array.prototype.random= function()
{
for(var i=(this.length-1);i>1;i--)
{
var j=rand(this.length-1);
var cache=this[i];
this[i]=this[j];
this[j]=cache;
}
}
var array=new Array ("1","2","3","4","5");
for(var a in array)
{
alert(array[a]);
}
array.random();
for(var b in array)
{
alert(array[b]);
}

See again Look at object reflection
Reflection is an object mechanism that allows you to understand its properties and methods without knowing anything about the object. Normally, programmers are very ignorant of how the objects they manipulate are composed. Understood, but in some special cases when using a complex object written by someone else, we need to quickly understand the properties and methods of this object, and we need to use the reflection mechanism. Of course, the application of reflection is not limited to Therefore, here is just an introduction to the use of reflection in Javascript.

First of all, we may want to know whether there is a specific property or method in an object. At this time we can test it:
if (typeof(myobject.someproperty)!="undefined")
{
}
If an object or variable is not defined in Javascript, it always returns the undefined type.
You can also use other Built-in classes to narrow the scope of testing:
if(myobject instanceof Object)
{
}
instanceof is an operator used to test built-in or custom classes. The built-in class refers to Array , String, Date, Number, Math, RegExp, Boolean, Function and other built-in classes. For example: Function and Array both inherit from the Object class, so if you test an Array object in your code, if you First test whether it is an Object and it will return true. If you test whether it is an Array, it will also return true.

A simpler and more useful method is to traverse all the properties and methods of an object to quickly understand the internal state of an object:
Copy code The code is as follows:

function myobject(){
this.name="name";
this.age="age";
this.sex="sex";
this.func=function(){
}
}
var myobj=new myobject();
for(var i in myobj){
alert(myobj[i]);
}
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