在JavaScript中有静态方法和实例方法,静态方法是函数自己定义的,而实例方法是通过原型来定义。它们的区别是静态方法是可以直接用
类名.方法名
去调用的,而实例方法是要用实例才可以去调用实例.方法名
。
实例代码:
function People(name, age) {
this.name = name;
this.age = age;
// 实例方法
this.sayHello = function () {
console.log("hello");
}
}
var p1 = new People("张三", 23);
p1.sayHello() //hello
// People.sayHello(); //报错
// 实例方法
People.prototype.sayHey = function () {
console.log("hi");
}
// People.sayHey(); //报错
p1.sayHey(); //hi
// 静态方法
People.sayBay = function () {
console.log("bay");
}
People.sayBay() //bay
同理,属性也分为静态属性和实例属性,但引用不当不会报错,而是值为undefined
如果不好理解,可以想象对于数组(特殊的对象类型)的一些方法的使用时的情节。
var arr = [1, 2, 3];
// 实例方法
arr.push(4);
console.log(arr); // [1, 2, 3, 4]
// 静态方法
Array.isArray(arr);
console.log(Array.isArray(arr)); //true
如有错误欢迎指正!!!