JavaScript中对象和函数的区别

//创建test1对象
var test1={
  a:500,
  b:function(){
    console.log("bbb");
  }
}
test1.b();      //"bbb"
var a=test1;  
a.b();         //"bbb"

 可以使用点语法向下遍历访问到对象的属性和方法。

//创建test2函数
function test2(){
  a=500;
  b=function(){
    console.log("bbb");
  }
}


//函数中的属性和方法
1:私有属性和方法
   直接定义在函数体内的属性和方法,属于私有属性和方法,只能在函数体内部使用,无法在外部使用函数自身或者函数自身的实例调用

2:静态属性和方法(供类使用的)
 
 当定义一个函数后通过 “.”为其添加的属性和函数,通过函数自身仍然可以访问得到,但是其实例却访问不到

3:实例属性和方法(供实例化对象复制用的)
   使用this来创建函数内的属性和方法,这样虽然通过函数自身无法访问,但是其所有实例化的对象都拥有一份属性和方法的复制,但正因如此,如果一个函数对象有上千和实例方法,那么它的每个实例都要保持一份上千个方法的复制,这显然是不科学的,prototype应运而生。

4:prototype原型属性和方法(供所有实例化对象所共用的)
   在函数体外使用prototype来创建属性和方法,要注意不要被覆盖。当代码读取某个对象的某个属性的时候,都会执行一遍搜索,目标是具有给定名字的属性,搜索首先从对象实例开始,如果在实例中找到该属性则返回,如果没有则查找prototype,如果还是没有找到则继续递归prototype的prototype对象,直到找到为止


因此,如果希望实例对象的属性或函数共享则定义到prototype中,如果希望每个实例单独拥有的属性或方法则定义到this中,


 

猜你喜欢

转载自blog.csdn.net/CWH0908/article/details/88929922
今日推荐