JS 有关对象创建以及对象内方法的写法 以及var的疑惑解释

js中写法多种多样,好几种创建对象的不同的写法,对应的调用对象的方法的多种多样,对初学者来说眼花缭乱,尤其是我接受了一个离职同事的nodejs项目,发现很多代码写法看不懂,经过学习之后,我简单的整理了我刚开始在js学习中遇到的一些看不懂的写法,当它换了一种新的写法之后 你会发现,原来这段代码这么简单

有关对象的创建,对象中方法的写法以及对象中属性或者方法的调用

$(document).ready(function(){
person={name1:"xiaoliu",on1:function(){
alert('on1')
}};

$("#dianji").click(function(){
var c=person["on1"];
if(c){
    
    c();
}

  如上所示  挨个解答 

person={name1:"xiaoliu",on1:function(){
alert('on1')
}};

众做周知,js中{}代表对象,里面可以有属性和方法,属性和方法统称为对象成员,而[ ]代表数组 

ok,创建对象有很多方法如new,构造函数等等 我比较习惯字面量直接创建对象,创建了个person对象,对象有name1属性 和on1方法,方法写法为on1:function(){},注意 这种写法只能放到对象内部,如果放到外部的话会报错,有人可能会问了 为什么创建person对象不加 var 关键字呢 ,这个问题下面会解释,继续往下说

var c=person["on1"];
if(c){
    c();
}

这段代码,讲到了调用,即使用.的方式调用对象属性,即person.name1,person.on1();也可以用[ ]来调用对象属性,即person["name1"];

然后使用var c=person["on1"]  if(c)的方式来判断是否存在on1方法,如果存在, 使用c()来调用on1方法,同理也可使用person.on1()来调用,

最后解释下有无var的区别

借鉴一篇文章:

我们先来看一段代码

function show(){

alert(abc);

}

var abc="defg";

show();

1、没有var

简明的说,定义变量时省略var是不安全的,不过是合法的。这时无论该变量是在什么位置定义的,解释器都会赋予该变量以全局作用域。

2、有var

安全的,合法的。定义的变量的作用域取决于定义的位置。。

函数中的才是对abc的定义,只不过值为undefined,这时abc有全局作用域,函数外var abc="defg"只是对abc的值的更新。

猜你喜欢

转载自blog.csdn.net/Rucimeili/article/details/81284860