function Animal(){
//用this的都是公用的成员变量或成员方法
this.name="猫";
this.weight=110;
this.run=function(){
console.log("每天跑步");
}
//局部变量或方法,对象不能直接调用
var height=200;
var fight=function(){
console.log("我要把你打倒");
window.onload=function(){
var oLi=document.getElementsByTagName("li");
for (var i = 0; i < oLi.length; i++) {
oLi[i].onclick=(function(n){//这里是形参
return function(){
alert(oLi[n].firstChild.nodeValue);
};
})(i);//这里是实参
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8&quo
alert(oLi[i].firstChild.nodeValue);
this.name="小狗"
return "返回字符串后还是对象"
var age=10;//这句不会被执行,因为返回了。
var dog=new Animal();
console.log(dog.name);
//创建构造函数对象
var f=new Function("name","console.log(name)");//F必须大写
f("小李");
和call的区别是apply把参数装在了数组。call是字符串形式作参数。
function run(addr){
console.log(addr+"的"+this.name+"在跑步");
var cat={name:"猫",addr:"四川",climb:function(){console.log(this.name+"会爬树")}}
var tiger={name:"老虎",addr:"东北"};
run.apply(tiger,["四川"]);
tiger.run;
//cat对象调用自己的方法时候指向tiger,相当于把cat的成员给了tiger
cat.climb.call(tiger);
注意:通过 方法名.call(对象名) 对象.方法名
方法名后面不需要加括号