js 构造函数(construction)与原型(prototype)

页面导航:首页 > 网络编程 > JavaScript > js 构造函数(construction)与原型(prototype)

js 构造函数(construction)与原型(prototype)

来源: 作者: 时间:2016-02-04 09:15 【

1 面向对象:js原型java有class和instance,js只有构造函数(function Cat(name,age){this name=name;this age=age}),为了实现数据共享和抽象出通用的属性,加了一个原型prototype eg:function C

1.面向对象:js原型

java有class和instance,js只有构造函数(function Cat(name,age){this.name=name;this.age=age}),为了实现数据共享和抽象出通用的属性,加了一个原型prototype

eg:

function Cat(name,age){

this.name = name;//这里的this相当于java里面的instance

this.age = age;

this.work = function(){

alert("I am working");

}

}


var cat1 = new Cat("cat1",13);

var cat2 = new Cat("cat2",15);

cat1和cat2的都有work属性,但是一样的属性,明显是多余的,造成浪费,可以抽象出原型出来

function Dog(name,age){

this.name = name;

this.age = age;

}


Dog.prototype = {work:function(){alert("I am working!")}}或者

Dog.prototype.work = function(){

alert("I am working");

}

2.封装:

原始模式:var cat = {};cat.name = "cat1";cat.id = "id1";

原始模式改进:var cat = function cat(name,id){return {name:name,id:id}},相当于调用函数

构造函数模式:function(name,id){this.name = name;this.id=id}

js中构造函数在初始化的时候加new和不加new的区别

function Dog(name,age){

this.name = name;

this.age = age;

}


Dog.prototype = {work:function(){alert("I am working!")}}

var dog1 = Dog("dog1",12);//这只是相当于调用普通函数,原型work不会生成,调用work属性会报错

var dog2 = new Dog("dog2",13);//这里是调用构造函数,初始化原型work

var dog3 = new Dog("dog3",14);

dog2.constructor == Dog; dog3.constructor == Dog


为了解决从原型对象生成实例的问题,script提供了一个构造函数(Constructor)模式。

所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。






Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<