window.n = 'window name'
let obj = {
n: 'obj name',
sayN(){
console.log(this.n)
}
}
let fn = obj.sayN//それに騙されてはいけない。
fn()//fnの呼び出しは余計な情報を渡さず、fnの thisはウィンドウである。
window.n = 'window name'
let obj = {
n: 'obj name',
sayN: () => {
console.log(this.n)
}
}
obj.sayN()//ここでsayNはアロー関数であり、アロー関数は thisを持たないことに注意されたい。
//数字の「これ」は、彼の範囲外の「これ」と同じであり、この場合、彼の範囲外の「これ」はウィンドウである。
class A{
constructor(){
this.name = 'A'
}
sayName(){
console.log(this.name)
}
}
class B extends A{
constructor(){
super()
this.name = 'B'
}
}
let obj = new B()
console.log(obj.sayName())
Promise.reject('error')
.then( ()=>{console.log('success1')}, ()=>{console.log('error1')} )
.then( ()=>{console.log('success2')}, ()=>{console.log('error2')} )
//最初のthenはリジェクトを投げないので、2番目のthenはthenがすべての問題を解決したと仮定する。
<div id=app></div>
window.name = 'window name'
let app = new Vue({
name: 'name 1',
el: '#app',
data(){
return {name:'name 2'}
},
created(){
console.log(this.name)
}
})
//createdアプリの thisはアプリを指し、アプリ名はデータ内の名前である。
(1)ヴューの場合.js v-forがレンダリングされた要素のリストを更新する場合、デフォルトは "reuse-in-place "になる。”のポリシーに従う。データ項目の順序が変更された場合、Vueはデータ項目の順序に合わせてDOM要素を移動させない,
その代わり、ここでは単純に各要素を再利用し、特定のインデックスでレンダリングされた各要素を確実に表示する。
(2)Vueにヒントを与えて各ノードの識別情報を追跡し、既存の要素を再利用したり並べ替えたりするには、各項目に一意のkey属性を指定する必要がある。
(3)理想的なキー値は、各アイテムの一意なIDである。
(4)2.2.0+ バージョンでは、コンポーネントでv-forを使用する際にキーが必要となる。
var myMixin = {
created: function () {
this.hello()
},
methods: {
hello: function () {
console.log('hello from mixin!')
}
}
}
var Component = Vue.extend({
mixins: [myMixin],
methods: {
hello(){
console.log('hello from options')
}
}
})
var component = new Component()
//mixinsコンポーネント自身のプロパティを使用することを好む。
function getSomething(){
setTimeout(function(){
return 'hello'
})
}
let something = getSomething()
console.log(something)
//getSomethingノーリターン
let _name = 'MyName'
let obj = {}
Object.defineProperty(obj, 'name', {
get(){
return _name
},
set(value){
_name = value
}
})
obj.name = 'NewName'
console.log(_name)