=============================================================================
--> 载入场景 -->自动运行所包含组件的游戏脚本。请深刻理解“包含组件的游戏脚本”
-----------------------------------------------------------------------------
//-- 关于require的循环引用问题:
//-- item.js
var item = cc.Class({
properties:()=>({
game:{
default:null,
type:require("other"),
}
})
});
module.exports = item;
//-- other.js
var other = cc.Class({
properties:()=>({
item:{
default:null,
type:require("item"),
}
})
});
module.exports = other;
-----------------------------------------------------------------------------
自己的问题:new 出来的ccToggle 和 属性检查器中出来的属性不同。
答:自己new出来的cc.Toggle 是一个组件对象。
属性检查器中的是Node节点上附加了cc.Toggle属性,而且这个Node是由父子节点的。
这两个是不一样的东西,即属性不同。
-----------------------------------------------------------------------------
//-- 把一些脚本设置为插件, 允许编辑器加载,如编辑器中的其它普通脚本加载过程中会依赖当前脚本,则需要手动开启这个选项。
通常我们在插件中写入:
1.立即执行函数,立即执行函数内部没有加入 window. 的属性,外部是不可访问的,加入即可在外部访问(全局)。如果在函数的外
部写入的 属性,则不需要加入 window. 属性。 如果在函数内部,没有定义而立即使用的属性,则也会直接认为是全局变量(在不是
strict的情况,在strict的情况直接使用未定义的属性会报错)
2.可以给一些既定存在的类型添加原型属性,例如在cocoscreator中。
cc.Toggle.prototype.setSelectState = function(isSelect) {
cc.log("isSelect==", isSelect);
cc.log("this.toggleGroup==", this.toggleGroup);
cc.log("this._toggleContainer==", this._toggleContainer);
var group = this.toggleGroup || this._toggleContainer;
}
插件脚本需要手动声明 use strict,否则未定义的变量一旦赋值就会变成全局变量
-----------------------------------------------------------------------------
[].slice.call(arguments, 1) //--意思是取得arguments数组的下标为1的元素
//arguments是调用对象,替换了[],1是传递给slice的参数。
-----------------------------------------------------------------------------
逗号分隔, 不是逗号操作符
var a=0, b=5, c="ss";
//-- 下面的函数返回的是i,即返回的是1。
testDouhaoUsed(){
var args = 1,s2 ="sss";
cc.log(args);
cc.log(s2);
function ttes(){
var i = 0;
return (i+=1, i);
}
cc.log(ttes());
},
-----------------------------------------------------------------------------
数据属性 访问器属性
原型属性 实例属性
Object.create(proto)方法创建一个新对象,使用现有的对象来提供新创建的对象的 __proto__.
proto 新创建对象的原型对象。
每个对象都会在内部初始化一个属性,就是__proto__,当我们访问一个对象时,如果对象内部不存在这个属性,那么他就会去__proto__里
去找这个属性,这个__proto__又会有自己的__prto__,于是这样一直找下去,也就是原型链。
每个函数都有一个prototype属性(只有函数才有),这个属性是一个指针,prototype属性指向原型对象。
-----------------------------------------------------------------------------
jdk java 虚拟机,编译.class的环境
--> sdk (java) 使用java开发android
--> NDK(c/c) 要使用c/c的第三方库,以前是用java 的jni调用c/c
-----------------------------------------------------------------------------
require/exports
require/exports 出生在野生规范当中,即这些规范是 JavaScript 社区中的开发者自己草拟的规则,得到大家的承认或者广泛的应用。
比如 CommonJS、AMD、CMD 等等。
CommonJS 是 Node.js 的规范。require/exports 的用法只有以下三种简单的写法:
const fs = require('fs')
exports.fs = fs
module.exports = fs
-----------------------------------------------------------------------------
ES6中export和import的使用。
import/export 则是名门正派。TC39 制定的新的 ECMAScript 版本,即 ES6(ES2015)中包含进来。
// profile.js
var firstName = 'Michael';
var lastName = 'Jackson';
var year = 1958;
export {firstName, lastName, year};
// main.js
import {firstName, lastName, year} from './profile';
function setName(element) {
element.textContent = firstName + ' ' + lastName;
}
-----------------------------------------------------------------------------
CommonJS 和 ES6 之间的差异,Node.js 无法直接兼容 ES6。所以现阶段 require/exports 仍然是必要且是必须的。出自 ES6 的
import/export 相对就晚了许多。
这也就是为什么前面说 require/exports 是必要且必须的。因为事实是,目前你编写的 import/export 最终都是编译为
require/exports 来执行的。
JS和Cocoscreator杂项
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.