jsのXOR演算
JavaScript では、XOR 演算は記号 ^ で表されます。その機能は 2 つの 2 進数をビットごとに比較することです。それらが同じである場合、対応するビットの結果は 0 になります。それらが異なる場合、対応するビットの結果は 0 になります。ビットは1です。例えば:
console.log(5 ^ 3); // 输出2,因为5和3的二进制分别是101和011,按位异或后得到110,即2
2 つのオペランドのうちの 1 つが 2 進数でない場合は、2 進数に変換されて演算されます。両方のオペランドが数値型でない場合、演算前に文字列型に変換されます。具体的な規則については、JavaScript データ型変換を参照してください。
js継承の概要
JavaScript では、継承は次の方法で実装できます。
- プロトタイプの継承
継承は、あるコンストラクターのプロトタイプ オブジェクトを別のコンストラクターのプロトタイプとして使用することにより、プロトタイプ チェーンに基づいて実装されます。
// 父类
function Animal() {
this.eat = function () {
console.log('Animal eat');
}
}
// 子类
function Dog() {
}
// 继承
Dog.prototype = new Animal();
// 创建实例
var dog = new Dog();
dog.eat(); // 输出: Animal eat
- コンストラクターの継承
継承は、あるコンストラクターを別のコンストラクター内で呼び出すことによって実現されます。
// 父类
function Animal(name) {
this.name = name;
}
// 子类
function Dog(name) {
Animal.call(this, name);
}
// 创建实例
var dog = new Dog('Tom');
console.log(dog.name); // 输出: Tom
- 構成継承
プロトタイプ継承とコンストラクター継承の両方を使用して継承を実装します。
// 父类
function Animal(name) {
this.name = name;
}
Animal.prototype.eat = function() {
console.log('Animal eat');
}
// 子类
function Dog(name) {
Animal.call(this, name); // 构造函数继承
}
Dog.prototype = new Animal(); // 原型继承
// 创建实例
var dog = new Dog('Tom');
dog.eat(); // 输出: Animal eat
console.log(dog.name); // 输出: Tom
- ES6 が拡張
class キーワードと extends キーワードは ES6 の新機能であり、継承の実装が簡単になります。
// 父类
class Animal {
constructor(name) {
this.name = name;
}
eat() {
console.log('Animal eat');
}
}
// 子类
class Dog extends Animal {
constructor(name) {
super(name);
}
}
// 创建实例
let dog = new Dog('Tom');
dog.eat(); // 输出: Animal eat
console.log(dog.name); // 输出: Tom