javascript建立对象简朴的说,不过就是运用内置对象或种种自定义对象,固然还能够用JSON;要领许多,也能夹杂运用。
对象字面量的体式格局:
var person={ name:"SF", age:25 say:function(){ alert(this.name+"本年"+this.age); } }; person.say();
建立Object实例:
var my = new Object(); my.name = "SF"; //JavaScript的发明者 my.age = 25; my.say = function() { alert("我是"+this.name+"本年"+my.age); } my.say();
*属性是能够动态增加,修正的
组织函数
无参组织函数
function Person(){} var person = new Person(); person.name = "SF"; person.age = "25"; person.say = function() { alert("My name is " + person.name); } person.say();
有参组织函数
function Person(name,age) { this.name = name; this.age = age; this.say = function() { alert("我叫" + this.name + ",本年" + this.age + "岁); } } var my = new Person("SF",25); //实例化、建立对象 my.say(); //挪用say()要领
由于this指针在对象实例的时刻发作转变指向新的实例。这时新实例的要领也要从新建立,假如n个实例就要n次重修雷同的要领。
工场形式
function creatPerson(name,age){ var person = new Object(); person.name=name; person.age=age; person.say=function(){ alert(this.name+"本年"+this.age+"岁"); }; return person; }; var my = creatPerson('SF',25);//实例化 my.say();//挪用
原型体式格局
function Person(name,age){} Person.prototype.name = "SF"; Person.prototype.age = 25; Person.prototype.say = function() { alert(this.name+"是我的名字"); } var my = new Person(); my.say();
让我们先了解下原型:
起首,每一个函数都有一个prototype(原型)属性,这个指针指向的就是Person.prototype对象。而这个原型对象在默许的时刻有一个属性constructor,指向Person,这个属性可读可写。而当我们在实例化一个对象的时刻,实例my除了具有组织函数定义的属性和要领外(注重,只是组织函数中的),另有一个指向组织函数的原型的指针,ECMAScript中叫[[prototype]],如许实例化对象的时刻,原型对象的要领并没有在某个详细的实例中,由于原型没有被实例。所以这类形式定义的对象,在挪用要领的时刻历程:挪用my.say();先看实例中有没有,有调之,无追踪到原型,有调之,无失足,挪用失利。
上面代码同等
function Person(name,age){} Person.prototype={ constructor:Person, //必需手动设置这个属性,不然没有实例同享原型的意义了。 name:"SF", age:25, say:function(){ alert(this.name+"是我的名字"); } } var my = new Person(); my.say();
夹杂体式格局 (组织函数+原型)
function Person(name,age) { this.name = name; this.age = age; } Person.prototype.say = function() { alert("我是"+this.name+",本年"+this.age); } var my = new Person("SF","25"); my.say();