交换律特质啥是交换律?就是多个数做运算,交换被操作数的位置,结果不变,如:axbxc=cxbxaa^b^c = c^b^a结合律特质啥是结合律?就是多个数做运算,操作数可以与前后任意结合,先做运算,再与其他操作数做运算,结果不变,如:(axb)xc=ax(bxc)(a^b)^c = a^(b^c)0 异或 谁 结果 就是谁0^M = M相同的数做异或运算 结果是 0M^M = 0其他特质d = a^b^c 则 a =d^b^c应用1找不同,假设一个数组int[] arr = {1,1,2,3,2}。数组中有一个孤独数是2,要求找出他,异或公式如下:for(int i=1; i<arr.length; i++){ arr[0] = arr[0] ^ arr[i]; } System.out.println(arr[0])应用2简单加密解密,利用到两个特质:相同的数做异或运算 结果是 0,0 异或 谁 结果 就是谁。 一句话总结:一个数X连续异或同一个数M两次 , 结果还是这个数X a^b^a = b^a^a = b^0 = 0^b =b
\_proto_ 和 prototype 的区别prototype 是一个静态属性,是函数所独有的\_proto_ 是一个非法属性(虽然可以用,严重不建议),他访问到在是实例对象的属性[[prototype]]的值\_proto_ 和 prototype 的指向两者都指向自身的原型对象简单示例var Fun = function(){} var fff = new Fun() fff.__proto__ === Fun.prototype // true Fun.prototype.name="www" fff.name // www其他注意\_proto_ 是一个非法在属性,是浏览器厂商自己实现的,并非js标准,自己玩玩可以,但是不要在业务代码中使用。如果要获取一个实例对象的原型,请使用:Ojbect.getPrototypeOf(obj)Ojbect.getPrototypeOf(fff) === Fun.prototype // true
为什么要模块化模块化的目的是为了适应现代软件行业的特点:大型、复杂、多人协作。模块化之后,就可以将项目拆分,自由组合,从而达到解耦和复用。那什么是模块化呢?对于js而言,一个文件就是一个模块。export 对外公开暴露接口export的作用就是对外输出接口,从而让其他人员使用。// one.js export let name="jack" export function test(){return 100} export class Animal(){}从上面的one.js可以看到,export 可以多次使用,而且可以输出多种类型的数据:变量、函数、类等。虽然可以在一个文件多次使用export关键字,但是谁会这样做呢?通常聪明人还是批量输出在,一次输出多个接口,做法如下:// two.js let name = 'rose' let run = function(){ return "hello world"} let person = class{} // export {} 一次性输出一组定义好在变量 export {
JS的构造函数是什么?js的构造函数本质上只是一个普通的函数,他的主要作用就是帮我们构造一个对象。在开发中,他有着约定俗称的写法和一些特别的用法。约定函数名首字母大写调用函数时使用new关键字,生成一个对象函数内部使用this关键字,代表生成对象的实例JS构造函数的基本语法function Pets(name){ this.id=name } let p = new Pets("dog") p.id // dog其他注意事项如果调用函数时候,忘记使用new关键字会发生什么?这会导致函数从一个构造函数变成一个普通函数。函数内部的this将不再代表生成对象的实例,而是指向了全局对象。
ES6之前,javascript只有六种数据类型,分别是: undefined、null、Boolean、Number、String、Object现在进入ES6 时代,我们的数据类型又多了一个新成员Symbol。正如他的中文意义,Symbol只是一个符号,他具有象征和代表意义。那如此一说,Symbol象征和代表了什么?答案是:一个全局的独一无二的唯一值。好难理解哇,这样,可以将一个Symbol的值想象为一个uuid。注意:这是为了理解,所以只能想象。因为uuid虽然是全局唯一的,但是他是一个字符串,而Symbol是一个独立的原始数据类型,他不是字符串。创建一个唯一值let s = Symbol()就是这么简单,通过Symbol()函数即可创建。/* 以下是一个带参的,参数的意义仅仅是对Symbol 值的描述,方便我们在控制台打印时用于区分。 * 注意: 即使参数相同,Symbol的返回值也不想等。 */ let s1 = Symbol("foo") let s2 = Symbol("foo") s1 === s2 //false重点: S
Minghui
却道天凉好个秋!
CC BY-NC-SA 4.0