how-to-list-object-methods-javascript

#如何列出JavaScript物件的所有方法 找出如何獲取包含JavaScript物件方法的陣列 我們可以使用 ‘Object.getOwnPropertyNames()’ 函數來獲取與物件相關聯的所有屬性名稱。 然後,我們可以過濾結果陣列,只包括那些屬性名稱是函數的。 我們可以通過使用typeof來判斷它是否為一個函數。 例如,以下是我們可能創建的實用程式函數: getMethods = (obj) => Object.getOwnPropertyNames(obj).filter(item => typeof obj[item] === 'function') 這只列出在特定物件上定義的方法,而不是在其原型鏈中定義的任何方法。 要做到這一點,我們必須採取稍微不同的路線。我們必須首先迭代原型鏈並將所有屬性列在一個陣列中。然後,我們檢查每個單個屬性是否為函數。 為了確保在瀏覽原型鏈時不重複方法(例如始終存在的 constructor ),我們使用了一個Set數據結構,它確保值是唯一的: const getMethods = (obj) => { let properties = new Set() let currentObj = obj do { Object.getOwnPropertyNames(currentObj).map(item => properties.add(item)) } while ((currentObj = Object.getPrototypeOf(currentObj))) return [...properties.keys()].filter(item => typeof obj[item] === 'function') } 使用示例: getMethods("") getMethods(new String('test')) getMethods({}) getMethods(Date.prototype)

JavaScript 中的 this

this 是一個根據使用位置有不同值的關鍵字。不了解 JavaScript 中這個微小的細節可能會帶來很多困擾,所以花五分鐘的時間來學習所有的技巧是值得的。 this 在嚴格模式下 在任何物件之外,在嚴格模式下,this 的值總是 undefined。 請注意,我提到了嚴格模式。如果未啟用嚴格模式(如果你的文件頂部沒有明確添加 'use strict'),你將處於所謂的松散模式,而 this - 除非下面特殊情況中提到的 - 將具有全局物件的值。 這意味著在瀏覽器上下文中是 window。 方法中的 this 方法是附加到物件的函式。 你可以以各種形式看到它。 以下是其中一種: const car = { maker: 'Ford', model: 'Fiesta', drive() { console.log(`Driving a ${this.maker} ${this.model} car!`) } } car.drive() //Driving a Ford Fiesta car! 在這種情況下,使用一般函式,this 會自動綁定到物件。 注意:上述的方法宣告與 drive: function() {… 是相同的,只是比較簡短: const car = { maker: 'Ford', model: 'Fiesta', drive: function() { console.log(`Driving a ${this.maker} ${this.model} car!`) } } 在這個例子中也是一樣的:...

JavaScript 參考:物件

關於 JavaScript 物件屬性和方法的一切 本篇文件記錄了所有 Object 內建物件的屬性和方法。 除了原始類型(字串、數字、布林值、符號、null 或 undefined)之外的任何值都是一個物件。即使是陣列或函式,在底層也都是物件。 可以使用物件字面語法來生成一個物件值: const person = {} typeof person // "object" 可以使用 Object 全局函式來生成物件值: const person = Object() typeof person // "object" 也可以使用 Object 建構函式來生成物件值: const person = new Object() typeof person // "object" 另一種語法是使用 Object.create(): const car = Object.create() 可以使用以下語法來初始化物件的屬性: const person = { age: 36, name: 'Flavio', speak: () => { // 說話 } } const person = Object({ age: 36, name: 'Flavio', speak: () => { // 說話 } }) const person = new Object({ age: 36, name: 'Flavio', speak: () => { // 說話 } }) 這些方式基本上是等價的,因為它們都可以讓您訪問我下面將列出的方法。...

Node路徑模組

Node.js的路徑模組提供了一些有用的功能來處理檔案路徑。 path模組提供了許多非常有用的功能來存取和操作檔案系統。 不需要單獨安裝它。由於它是Node的核心部分,只需透過require進行引用即可: const path = require('path') 此模組提供了path.sep來提供路徑分隔符號(在Windows上為\,在Linux和macOS上為/),以及path.delimiter提供路徑分隔符(在Windows上為;,在Linux和macOS上為:)。 以下是path的方法: path.basename() path.dirname() path.extname() path.isAbsolute() path.join() path.normalize() path.parse() path.relative() path.resolve() path.basename() 返回路徑的最後一部分。第二個參數可以過濾掉檔案的副檔名: require('path').basename('/test/something') //something require('path').basename('/test/something.txt') //something.txt require('path').basename('/test/something.txt', '.txt') //something path.dirname() 返回路徑的目錄部分: require('path').dirname('/test/something') // /test require('path').dirname('/test/something/file.txt') // /test/something path.extname() 返回路徑的副檔名部分: require('path').extname('/test/something') // '' require('path').extname('/test/something/file.txt') // '.txt' path.isAbsolute() 如果是絕對路徑則返回true: require('path').isAbsolute('/test/something') // true require('path').isAbsolute('./test/something') // false path.join() 將兩個或多個路徑部分組合起來: const name = 'flavio' require('path').join('/', 'users', name, 'notes.txt') //'/users/flavio/notes.txt' path.normalize() 當路徑包含相對位置符(.或..)或連續的斜線時,嘗試計算實際的路徑: require('path').normalize('/users/flavio/..//test.txt') ///users/test.txt path.parse() 將一個路徑解析為一個包含其組成部分的物件: root:根路徑 dir:從根路徑開始的目錄路徑 base:檔案名稱+副檔名 name:檔案名稱 ext:檔案的副檔名 範例:...

Swift 物件

本教程屬於 Swift 系列 在 Swift 中,一切皆為物件。即使我們將數值 8 賦予變數 age,這個 8 也是一個物件。 在某些語言中,物件是一種特殊型別。但在 Swift 中,一切皆為物件,這導致了 Swift 的一個特點:每個值都可以「接收訊息」。 每種型別可以有多個與之相關的函式,我們稱之為方法。 舉例來說,對於數值 8,我們可以呼叫其 isMultiple 方法,以檢查該數字是否為另一數字的倍數: 字串值有另外一組方法。 一個型別也可以有實例變數。例如,字串型別有一個名為 count 的實例變數,可用於獲取字串中的字符數量: Swift 有三種不同的物件型別,我們稍後會詳細介紹:類別(classes)、結構體(structs)和列舉型別(enums)。 它們之間非常不同,但有一個共同點:對於物件型別,我們可以新增方法,並且對於任何型別的任何值,我們都可以發送訊息。

Vue.js 方法

Vue 方法是與 Vue 實例相關聯的函數。方法定義在 methods 屬性中。讓我們看一下它們是如何工作的。 什麼是 Vue.js 方法 將參數傳遞給 Vue.js 方法 如何從方法中訪問數據 什麼是 Vue.js 方法 Vue 方法是與 Vue 實例相關聯的函數。 方法定義在 methods 屬性中: new Vue({ methods: { handleClick: function() { alert('測試') } } }) 在單文件組件的情況下: <script> export default { methods: { handleClick: function() { alert('測試') } } } </script> 在需要執行動作並且將 v-on 指令附加到元素來處理事件時,方法尤其有用。例如,以下代碼在元素被點擊時調用 handleClick 方法: <template> <a @click="handleClick">點我!</a> </template> 將參數傳遞給 Vue.js 方法 方法可以接受參數。 在這種情況下,您只需要在模板中傳遞參數,然後在方法內部使用它: <template> <a @click="handleClick('something')">點我!</a> </template> new Vue({ methods: { handleClick: function(text) { alert(text) } } }) 在單文件組件的情況下:...

方法和函數有什麼區別?

什麼是方法?什麼是函數?它們之間有什麼區別? 一個函數是獨立存在的: const bark = () => { console.log('wof!') } bark() 或者: function bark() { console.log('wof!') } bark() 而方法是指分配給對象屬性的函數: const dog = { bark: () => { console.log('wof!') }, } dog.bark() 方法可以訪問對象的屬性,但只有在它是一個常規函數而不是箭頭函數時才可以: const dog = { name: 'Roger', bark: function () { console.log(`我叫${this.name}。wof!`) }, } dog.bark()