Essência da Linguagem JavaScript - Leitura Intensiva

Programar é uma coisa difícil. Você nunca deve começar seu trabalho em um estado de ignorância.
Programação é a habilidade de decompor um conjunto de requisitos em um conjunto de funções e estruturas de dados.

Pontos de conhecimento adicionais:
xey: representa o valor de 10 elevado a y multiplicado por x
Por exemplo: 1e2 = 10 ao quadrado multiplicado por 1 = 100 Para
detectar se uma propriedade vem de um membro do objeto ou da cadeia de protótipos, você pode usar obj.hasOwnProperty( attr)
Se nenhuma expressão de retorno for especificada, o valor de retorno será indefinido.

Pontos para entender:

  1. programação funcional
  2. este ponteiro
Capítulo 3 Objetos
const obj = {
	name: 'amy',
	age: 100,
	happy: true
}

Literal do objeto:
Se for uma palavra não-chave legal, o nome da propriedade do objeto pode estar sem aspas duplas, caso contrário, o nome da propriedade precisa ser colocado entre aspas duplas.
Recuperação: O valor do atributo
pode ser obtido []na .forma de , geralmente usado ., pois é simples e intuitivo, mas quando o nome do atributo é inválido ou nomeado após uma palavra-chave reservada, é necessário usar []
Update

obj.name = 'aliveAmy'; //修改值
obj.gender =  'female'; //添加新属性

protótipo

	Object.create = function(o) {
		const Fun = function(){};
		Fun.prototype = o;
		return  new Fun()
	}

const another_amy = Object.create(obj);
another_amy.name  // amy
another_amy.name = aliveAmy
another_amy.name  // aliveAmy
delete another_amy.name  暴露原型属性
another_amy.name  // amy

reflexão

typeof obj.name //string
typeof obj.age //number
typeof obj.happy //boolean

typeof.toString //function
typeof constructor //function

Na maioria das vezes, só nos preocupamos com os dados. Existem duas maneiras de excluir métodos redundantes em objetos:
1. typeof xxx === function
2. obj.hasOwnProperty(xxx) //Este método não verificará o protótipo

Enumeração
Percorre os valores de chave de todos os objetos, mas não em ordem, você pode usar para em

for (attr in obj) {
	console.log(attr); //属性随机排列。
}

excluir

delete obj.gender


Existem duas maneiras de reduzir a poluição da variável global :
1. Defina apenas uma variável global, e todas as variáveis ​​usadas estarão sob este objeto. Há menos chance de conflitos com outros componentes.
2. Os fechamentos ocultam informações.

Capítulo quatro

Invocação:
Existem 4 modos de invocação em js:
esses modos diferem em como inicializar o parâmetro chave this.

padrão de chamada de método

Quando uma função é salva como propriedade de um objeto, nós a chamamos de método. Quando um método é chamado, ele é vinculado ao objeto. Se a expressão de invocação contiver uma ação para extrair um atributo, ela será invocada como um método.

padrão de chamada de função

Quando uma função não é uma propriedade de um objeto, ela é chamada como função, e quando a função é chamada nesse modo, ela é vinculada à variável global.

window.name = 'aliveAmy'
const nameObj =  {
	name: 'amy',
	getAttr: function() {
		console.log('方法式调用',this.name);
		const that = this;
		getName = function() {
			console.log('函数式调用, this指向全局对象', this.name); //aliveAmy
			console.log('函数式调用,改变this指针指向', that.name);  //amy
		}
		getName() //函数式调用  'amy'
	}
}
nameObj.getAttr();
Padrão de chamada do construtor

Quando um construtor é instanciado usando a palavra-chave new, é criado um novo objeto que é conectado ao membro da propriedade da função e isso é vinculado ao novo objeto.

	function User() {
		this.name = 'amy'
	}
const user = New User;  //这时候构造器User的this绑定到 user这个对象上,所以 this.name='amy' 其实就是等于 user.name = 'amy'。

function User1() {
		this.name = 'amy'
		return {}
}

function User2() {
		this.name = 'amy'
		return function() {}
}

function User2() {
		this.name = 'amy'
		return true
}
当构造器有return时,假如return的值为对象, 则this绑定到return的对象上, 如果不是对象, 则还是绑定在实例化构造器的对象上。
aplicar modo de chamada

O método apply nos permite criar um array de argumentos para passar para a função de chamada. Também nos permite escolher o valor disso. O método apply recebe dois parâmetros, o primeiro é o valor vinculado a this e o segundo é uma matriz de parâmetros.

Acho que você gosta

Origin blog.csdn.net/xieamy/article/details/100415890
Recomendado
Clasificación