JS常见输入输出题03

84 阅读1分钟
var value = 10
var obj = {
    value:100,
    method:function(){
        var foo = function(){
            console.log(this.value)//10
            console.log(this)//window
        }
        foo()
        return this.value//100
    }
}
obj.method()

-

var number = 10;
function Person(){
    number = 20//复写全局变量
    this.number = 30//定义原型变量
}
//原型函数
Person.prototype.getNumber = function(){
    return this.number;
}
var p = new Person()
console.log(p.getNumber())//30

-

var value = 10;
var obj = {
    value:20
}
var method = function(){
    console.log(this.value)//this-->window
}
method()//10
method.call(obj)//20
method.apply(obj)/20
var newMethod = method.bind(obj)
newMethod()//20

-

var value = 10
var obj = {
    value:100,
    method1:function(){
        console.log(this.value)//100
        var foo = function(){
            console.log(this.value)//10
        }
    }
}
console.log(obj.method())

-

function fn(k){
    this.m = k//给window对象创建一个m值
    return this//window
}
var m = fn(1)
var n = fn(2)//因为执行到这里全局作用域下的this.m被覆盖了
console.log(m.m)//2
console.log(n.n)//2

-

var myObject = {
    foo: "bar",
    func: function() {
        var self = this;
        console.log(this.foo);  //bar 
        console.log(self.foo);   //bar
        (function() {
            console.log(this.foo);   //undefined
            console.log(self.foo);   //bar
        }());
    }
};
myObject.func();

-

var color = 'green';
var test4399 = {
    color: 'blue',
    getColor: function(){
        var color = "red";
        console.log(this.color);
    }
}
var getColor = test4399.getColor;
//这句的getColor实际上变成了var this.getColor = test4399.getColor
getColor();//green
test4399.getColor();//blue