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:
- programação funcional
- 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.