这篇文章看javascript高级编程和精通javascript所得
创建对象的方式:
1.//定义构造函数
function Dog(name)
{
// 公有属性
this.name = name;
//私有属性
var age = 16;
//私有方法
function sayHello()
{
alert("hello world");
}
}
2.也可以如下创建
var Dog = new Object();
Dog.name="rose";
Dog.prototype.method = function(){...};
3.也可以如下创建
var Dog = {name:"rose";method:function(){....}}
比较而言,第一种方法是最好的
//公共方法
Dog.prototype.method=function(){alert("sayhello");}
//静态方法
Dog.sayhello = function(){alert("haha");}
方法的重载
1.根据参数的多少重载
function sendMessage(msg,obj)
{
if(arguments.length == 2)
{
obj.hadleMsg(msg);
}
else
{
alert(msg);
}
}
传入一个参数:sendMessage("hello world"):
传入两个参数:sendMessage("how are you?",{handleMsg:function(msg){alert("this is a custom message"+msg)}});
//一个接受任意数量参数并将其转换为数组的函数
function makeArray()
{
var arr= [];
for(var i=0;i<arguments.length;i++)
{
arr.push(arguments[i]);
}
return arr;
}
2.根据类型重载
判断类型有三种方式:typeof,constructor,instanceOf
用typeof有一个缺点,就是如果参数是对象,统一返回都是object ,无法判断具体对象
变量 | typeof变量 | constructor变量 |
object | object | object |
Array | object | Array |
function | function | Function |
string | string | String |
55 | number | Number |
true | boolean | Boolean |
new User() object User
instanceOf是java中Instanceof的实现,是判断是否实现了某一个类
function add(num1,num2)
{
if(num1.constructor ==Number&& num2.constructor==Number)
return num1+num2;
//或者
if(typeof num1=="number" && typeof num2=="number")
return num1+num2;
}