<html>
<head>
<script type="text/javascript">
function Person()
{}
Person.prototype.username = "zhangsan";
Person.prototype.password = "0123";
Person.prototype.getInfo = function()
{
alert(this.username + ":" + this.password);
}
var person = new Person();
var person2 = new Person();
person.username = "lisi";
person.getInfo();
person2.getInfo();
/*
单纯使用原型方式定义对象无法在构造函数中为属性赋初值,只能
在对象生成后再去改变属性值。
*/
</script>
</head>
<body>
</body>
</html>
构造器函数在js中式相当于类的概念,但是我们在通过构造器函数实例化对象的时候可能会出现constructor的指向出现问题
上面的方法实例出出来的person对象的constructor指向的是他的父构造器函数Person
var Person=function(){}
Person.prototype={
name:
age:
}
var person2=new Person
person2.constructor==object
这样实例化出来的对象的函数的指向就发生变化,由本来的Person的构造器函数指向Object,为了避免这样的问题,我们可以强制指向他的构造器函数
constructor:Person,
name: ,
age:
}
这里给大家推荐几个经常用到的在与原型上操作的方法:
合并数组
除了数组里面的方法concat() 数组方法
Array.prototype.push.call(arguments)
判断一个数据的数据类型
Object.prototype.toString.call(x) x是需要判断的数据类型
获取数组里面的最大项或者是最小项
Math.max.apply(null,arr) 需要改变函数调用时的对象
对于call和apply方法,传入参数的问题,call方法的参数是一个一个传递的,但是apply传入的参数是一一个数组的方式传入的,其他的没有什么区别
B.apply(A,arguments) // A对象应用B对象的方法