JS-练习题

// 1.
var buttons = [{
    name: 'b1'
}, {
    name: 'b2'
}, {
    name: 'b3'
}];

function bind() {
    for (var i = 0; i < buttons.length; i++) {
         buttons[i].onclick = function () {
             console.log(i);
         }
    }
};
bind();
buttons[0].onclick(); // 3
buttons[1].onclick(); // 3
buttons[2].onclick(); // 3


// 2.
var fn1 = 'ivan';
var name = 'good';
var fn1 = function (y) {
     y();
}

function fn1(x) {
     x(name);
}

function fn2(x) {
    console.log(x); // undefined
    console.log(name); // undefined
    var name = 'hello';
    console.log(name); // hello
}
fn1(fn2);


// 3. 
var num = 5;
function func1() {
    var num = 3;
    var age = 4;

    function func2() {
        console.log(num); // undefined
        var num = '123';

        function func3() {
            age = 6;
        }
        func3();
        console.log(num); // 123
        console.log(age); // 6
    }
    func2();
}
func1();


// 4.
function changeObjectProperty(o) {
    o.siteUrl = "http://www.csser.com/";
    o = new Object();
    o.siteUrl = "http://www.popcg.com/";
}
var CSSer = new Object();
changeObjectProperty(CSSer);
console.log(CSSer.siteUrl); // http://www.csser.com/


// 5.
var x = 8;
var objA = {
    x: 'good',
    y: 32
}

function add(x, y) {
    console.log(x.y + y); // 5+3=8
}

function fn(x, y) {
    x.y = 5; // objA.y=5
    y(x, 3); // add(objA,3)
}
fn(objA, add);
console.log(objA); // {x:"good",y:5}


// 6.
var obj1 = new Object();
obj1.name = 'abc';
var obj2 = obj1;
console.log(obj2.name); // abc
obj1.name = 'def';
console.log(obj2.name); // def


// 7.
var a = '' + 3;
var b = 4;
console.log(typeof a); // string
console.log(a + b); // "34"
console.log(a - b); // -1
console.log({} - b); // NaN
var foo = '11' + 2 + '1';
console.log(foo); // "1121"
console.log(typeof foo); // string
var foo1 = '11' + 2 * 2;
console.log(foo1); // "114"


// 8.
function Foo() {
    getName = function () {
       console.log(1);
    }
    return this;
}
Foo.getName = function () {
    console.log(2);
}
Foo.prototype.getName = function () {
    console.log(3);
}
var getName = function () {
    console.log(4);
}

function getName() {
    console.log(5);
}
Foo.getName(); // 2
getName(); // 4
Foo().getName(); // 1
getName(); // 1
new Foo.getName(); // 2

new Foo().getName(); // 3
// (new Foo()).getName()
// getName = function () {console.log(1);}
// new Foo()==>{__proto__:Foo.prototype==>getName = function () {console.log(3);}}

new new Foo().getName(); // 3
// new ((new Foo()).getName)()
// getName = function () {console.log(1);}
// new Foo()==>{__proto__:Foo.prototype==>getName = function () {console.log(3);}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值