cocos

cocos creator程序员笔试题

2018-11-04  本文已影响1270人  勤奋happyfire

Javascript部分

var a = [];
a[100] = 1;
console.log(a.length);
console.log(a[0]);
a[200] = undefined;
console.log(a.length);
console.lolg(a['100']);

请问四条log语句分别输出什么?
【答案】分别输出 101,undefined, 201,1

> var o = new Object()
o.__proto__ == Object.prototype
< true

o是Object构造出的对象,o的__proto __指向Object的prototype,这样o可以使用Object.prototype里面的方法。原型链:当js查找对象的属性时,先查找对象自身是否具有该属性,如果没有,就会去__proto __指向的prototype对象上查找,直到找到或者__proto __为null

function Foo(){
  this.count = 0;
}

Foo.prototype.bar = function(){
}

var foo = new Foo();
foo.bar();

var s = [];
function foo() {
    for(var i=0; i<3; i++){
            s[i] = function(){
                  console.log(i);
            }
    }
}
foo();
s[0]();
s[1]();
s[2]();

【参考答案】输出3,3,3。因为foo()函数执行时生成了三个闭包,这三个闭包绑定了同一个变量i,第三个闭包生成时,i的值为3。因此执行这三个闭包时都会输出3。
修改为输出0,1,2的原则是让三个闭包绑定不同的变量,所以在生成闭包时就要区分出来,一种修改方法如下:

var s = [];
function foo() {
    for(var i=0; i<3; i++){        
         s[i] = function(index){
              return function(){
                  document.write(index);
              }
         }(i);
        
    }
}
foo();
s[0]();
s[1]();
s[2]();

Cocos creator部分

let label = node.getComponent(cc.Label);
label.string = 'hello';
onLoad   组件首次激活时触发
start    组件第一次执行update之前触发
update     每一帧渲染前调用
lateUpdate 所有组件update调用后调用
onDestroy  组件或所在节点调用了destroy()时调用,并在当前帧结束时统一回收组件
onEnable  组件的enabled属性从false变为true时
onDisable  组件的enabled属性从true变为false时
var action = cc.moveTo(1, 100, 100);
node.runAction(action);

游戏开发部分

上一篇下一篇

猜你喜欢

热点阅读