JavaScript作用域,面向对象

一、作用域

python   :以函数作为作用域

JavaScript 作用域

 -------------------------1.默认以函数作为作用域---------------------

function func(){
     if (1==1){
          var name = 'xiaoming';
     }
     console.log(name);
}
func();

--------------------------2.函数的作用域在函数未被调用之前,已经创建-------------------------

function func(){
     if (1==1){
          var name = 'xiaoming';
     }
     console.log(name);
}

-------------------------3.函数的作用域存在作用域链,并且也是在被调用之前创建-------------------

xo = 'liyang' //4
function func(){
var xo = 'eric'; //3
function inner(){
xo = 'xiaohong' //1
console.log(xo);
}
var xo = 'tony' //2
return inner;
}
var ret = func()
ret()

结果返回1 ,没有1就返回2,没有1和2返回3,123没有返回4,都没有报错

----------------------------4.函数内局部变量提前声明--------------------------------

function func(){
   console.log(xxoo);
   var xxoo = 'liyang';
}
func()

结果找不到变量,undefined

二、面向对象

函数:

function Foo(n){
   this.name = n;
}
var obj = new Foo('we');


a.this代指对象(python self)
b.创建对象时,new 函数()

原型(类似python的__init__):

function Foo(n){
this.name = n;
}
Foo.prototype = {
   'sayName':function(){
    console.log(this.name)
  }
}

obj1 = new Foo('we');
obj1.sayName()
obj2 = new Foo('wee');

原文地址:https://www.cnblogs.com/brownyangyang/p/9191802.html