Tất Tần Tật Về Con Trỏ This Trong Javascript Dùng Làm Gì, Tất Tần Tật Về Con Trỏ This Trong Javascript – Chickgolden

if ( someVar. hasOwnProperty ( ” someProperty ” ) ) { / / Do something ( ) ; } else { / / Do somethingElse ( ) ; } Việc sử dụng / lý giải đúng là hasOwnProperty ( ” someProperty ” ) gì ? Tại sao toàn bộ tất cả chúng ta không hề sử dụng đơn thuần someVar. somePropertyđể kiểm tra xem một đối tượng người dùng người tiêu dùng someVarcó chứa thuộc tính với tên somePropertyhay không ? Tài sản trong trường hợp này là gì ?JavaScript này kiểm tra thuộc tính nào ?
Bạn đang đọc : Tất Tần Tật Về Con Trỏ This Trong Javascript Dùng Làm Gì, Tất Tần Tật Về Con Trỏ This Trong Javascript

Khi tôi hỏi câu hỏi này, tôi nghĩ đó là một chức năng kiểm tra một số html. Bây giờ tôi thấy nó đang kiểm tra một đối tượng hoặc phương thức javascript cho một “biến” trong đối tượng hoặc phương thức đó. thnx!
Khi tôi hỏi câu hỏi này, tôi nghĩ đó là một công dụng kiểm tra 1 số ít html. Bây giờ tôi thấy nó đang kiểm tra một đối tượng người tiêu dùng hoặc phương pháp javascript cho một ” biến ” trong đối tượng người dùng hoặc phương pháp đó. thnx !hasOwnPropertytrả về một giá trị boolean cho biết liệu đối tượng người tiêu dùng mà bạn đang gọi nó có thuộc tính với tên của đối số hay không. Ví dụ :var x = { y : 10 } ; console.log ( x. hasOwnProperty ( ” y ” ) ) ; / / trueconsole.log ( x. hasOwnProperty ( ” z ” ) ) ; / / falseTuy nhiên, nó không nhìn vào chuỗi nguyên mẫu của đối tượng người tiêu dùng .Bạn đang xem : This trong javascript dùng làm gìSẽ rất hữu dụng khi sử dụng nó khi bạn liệt kê những thuộc tính của một đối tượng người tiêu dùng với for … incấu trúc .Nếu bạn muốn xem chi tiết cụ thể không thiếu, thông số kỹ thuật kỹ thuật của ES5, như mọi khi, là một nơi tốt để xem.
Điểm thưởng cho chuỗi nguyên mẫu. Vẫn đang cố gắng tìm ra những gì gọi của nó trên khi nó không được gọi vào một đối tượng … không phải của mìnhwindow
KristofferSHansen – Tôi cũng tự hỏi điều đó, nhưng câu hỏi đã được chỉnh sửa nên bây giờ nó đang được gọi trên một đối tượng. Khi không, một lỗi sẽ xảy ra.
Tôi cho rằng điều đó thay đổi mọi thứ. Tuy nhiên, không có lỗi khi chạy từ bảng điều khiển trong Chrome.
KristofferSHansen – Tôi nghĩ đó là do cách bảng điều khiển chạy mã (nó chạy dưới dạng evalmã chứ không phải mã toàn cầu hoặc mã chức năng). Tôi đã thử nó trong một trang HTML trống và gặp lỗi “không thể chuyển đổi null thành đối tượng”.
Điểm thưởng cho chuỗi nguyên mẫu. Vẫn đang nỗ lực tìm ra những gì gọi của nó trên khi nó không được gọi vào một đối tượng người tiêu dùng … không phải của mìnhwindowKristofferSHansen – Tôi cũng tự hỏi điều đó, nhưng câu hỏi đã được chỉnh sửa nên giờ đây nó đang được gọi trên một đối tượng người dùng. Khi không, một lỗi sẽ xảy ra. Tôi cho rằng điều đó đổi khác mọi thứ. Tuy nhiên, không có lỗi khi chạy từ bảng tinh chỉnh và điều khiển trong Chrome. KristofferSHansen – Tôi nghĩ đó là do cách bảng điều khiển và tinh chỉnh chạy mã ( nó chạy dưới dạng evalmã chứ không phải mã toàn thế giới hoặc mã công dụng ). Tôi đã thử nó trong một trang HTML trống và gặp lỗi ” không hề quy đổi null thành đối tượng người dùng ” .Đây là một câu vấn đáp ngắn gọn và đúng mực :Trong JavaScript, mọi đối tượng người tiêu dùng đều có một loạt những cặp khóa-giá trị tích hợp có chứa thông tin meta về đối tượng người tiêu dùng. Khi bạn lặp qua toàn bộ những cặp khóa-giá trị bằng cách sử dụng for … incấu trúc / vòng lặp cho một đối tượng người dùng, bạn cũng đang lặp lại những cặp khóa-giá trị siêu thông tin này ( mà bạn chắc như đinh không muốn ) .*

Sử dụng hasOwnPropery(property) bộ lọc để loại bỏ những vòng lặp không cần thiết này thông qua thông tin meta và trực tiếp kiểm tra xem tham số propertycó phải là thuộc tính do người dùng cung cấp trong đối tượng hay không. Ý tôi là bằng cách lọc ra, điều hasOwnProperty(property)đó không propertycó trong chuỗi nguyên mẫu của Object hay còn gọi là thông tin meta.

Nó trả về boolean true / falsedựa trên đó. Đây là một ví dụ :

var fruitObject = {“name”: “Apple”, “shape”: “round”, “taste”: “sweet”};console.log(fruitObject.hasOwnProperty(“name”)); //trueconsole.log(Object.prototype.hasOwnProperty(“toString”);) //true because in above snapshot you can see, that there is a function toString in meta-information
Chạy đoạn mãẨn kết quả
Mở rộng đoạn mã

Tôi kỳ vọng nó rõ ràng !
— Om Sao nguồn
ở dòng cuối cùng của ví dụ bạn viết console.log(Object.prototype….; bạn đã có nghĩa là console.log(fruitObject.? fruitObject hay Object?
— Hamid Araghi
> “bạn cũng đang lặp lại các cặp khóa-giá trị siêu thông tin này” Nhưng dù sao khi tôi chạy for (var key in fruitObject) { … }js only cycle”s thông qua các khóa không phải nguyên mẫu, tôi có thiếu thứ gì đó không hay thời gian chạy JS đã thay đổi cách chúng xử lý đối với key-in-object vòng lặp?
— ChickenFeet
13
— Om Sao nguồnở dòng sau cuối của ví dụ bạn viết console.log ( Object. prototype …. ; bạn đã có nghĩa là console.log ( fruitObject. ? fruitObject hay Object ? — Hamid Araghi > ” bạn cũng đang lặp lại những cặp khóa-giá trị siêu thông tin này ” Nhưng dù sao khi tôi chạy for ( var key in fruitObject ) { … } js only cycle ” s trải qua những khóa không phải nguyên mẫu, tôi có thiếu thứ gì đó không hay thời hạn chạy JS đã biến hóa cách chúng giải quyết và xử lý so với key-in-object vòng lặp ? — ChickenFeet13Nó kiểm tra :

Trả về giá trị Boolean cho biết liệu một đối tượng người tiêu dùng có thuộc tính với tên được chỉ định hay không
Các hasOwnProperty giải pháp trả về true nếu đối tượng người dùng người tiêu dùng có một gia tài của tên được chỉ định, false nếu nó không. Phương thức này không kiểm tra xem thuộc tính có sống sót trong chuỗi nguyên mẫu của đối tượng người dùng người tiêu dùng hay không ; thuộc tính phải là thành viên của chính đối tượng người tiêu dùng người tiêu dùng .

Thí dụ:

var s = new String(“Sample”);document.write(s.hasOwnProperty(“split”)); //falsedocument.write(String.prototype.hasOwnProperty(“split”)); //true
— Pranay Rana nguồn
2
Tôi cho điểm -1 vì câu trả lời ban đầu của bạn là một câu ngắn và hoàn toàn không mạch lạc, sau đó được cập nhật thành một câu dài hơn, mạch lạc hơn một chút, nhưng hoàn toàn không chính xác.
amnotiam- nhưng tôi nghĩ rằng nó nhiều rõ ràng bây giờ … nó vì vấn đề internet của tôi tôi có thể không có khả năng gửi nhiều ……….
— Pranay Rana
12

Tóm lược:

hasOwnProperty ( ) là một hàm hoàn toàn có thể được gọi trên bất kể đối tượng người dùng nào và lấy một chuỗi làm đầu vào. Nó trả về một boolean truenếu thuộc tính nằm trên đối tượng người tiêu dùng, nếu không nó trả về false. hasOwnProperty ( ) nằm trên Object. prototypevà do đó có sẵn cho bất kể đối tượng người tiêu dùng nào. hasOwnProperty ( ) là một hàm trọn vẹn hoàn toàn có thể được gọi trên bất kể đối tượng người dùng người dùng nào và lấy một chuỗi làm đầu vào. Nó trả về một boolean truenếu thuộc tính nằm trên đối tượng người dùng người dùng, nếu không nó trả về false. hasOwnProperty ( ) nằm trên Object. prototypevà do đó có sẵn cho bất kể đối tượng người dùng người tiêu dùng nào. Xem thêm : search position in array php

Thí dụ:

function Person(name) { this.name = name;}Person.prototype.age = 25;const willem = new Person(“willem”);console.log(willem.name); // Property found on objectconsole.log(willem.age); // Property found on prototypeconsole.log(willem.hasOwnProperty(“name”)); // “name” is on the object itselfconsole.log(willem.hasOwnProperty(“age”)); // “age” is not on the object itself
Chạy đoạn mãẨn kết quả
Mở rộng đoạn mã

Trong ví dụ này, một đối tượng người tiêu dùng người tiêu dùng Person mới được tạo. Mỗi Người có tên riêng được khởi tạo trong hàm tạo. Tuy nhiên, tuổi không nằm trên đối tượng người dùng người tiêu dùng mà nằm trên nguyên mẫu của đối tượng người dùng người dùng. Do đó hasOwnProperty ( ) trả về truetên và falsetuổi .

Ứng dụng thực tế:

hasOwnProperty ( ) trọn vẹn hoàn toàn có thể rất có ích khi lặp qua một đối tượng người dùng người tiêu dùng bằng for invòng lặp. Bạn trọn vẹn hoàn toàn có thể kiểm tra nó nếu những thuộc tính là từ chính đối tượng người dùng người tiêu dùng chứ không phải từ nguyên mẫu. Ví dụ :

function Person(name, city) { this.name = name; this.city = city;}Person.prototype.age = 25;const willem = new Person(“Willem”, “Groningen”);for (let trait in willem) { console.log(trait, willem); // This loops through all properties, including the prototype}console.log(“\n”);for (let trait in willem) { if (willem.hasOwnProperty(trait)) { // This loops only through “own” properties of the object console.log(trait, willem); }}
Chạy đoạn mãẨn kết quả
Mở rộng đoạn mã
— Willem van der Veen nguồn
3

Bạn sử dụng object.hasOwnProperty ( p ) để xác định xem một đối tượng có thuộc tính liệt kê p

Một đối tượng người tiêu dùng người tiêu dùng trọn vẹn hoàn toàn có thể có nguyên mẫu riêng của nó, trong đó những chiêu thức và thuộc tính ” mặc định ” được gán cho mọi phiên bản của đối tượng người tiêu dùng người tiêu dùng. hasOwnProperty chỉ trả về true cho những thuộc tính đã được đặt đơn cử trong chiêu thức khởi tạo hoặc được thêm vào phiên bản sau đó .

Để xác định xem p có được định nghĩa ở mọi lúc, mọi nơi, cho đối tượng hay không, hãy sử dụng if ( p instanceof object), trong đó p đánh giá thành một chuỗi tên thuộc tính.

Ví dụ : theo mặc định, tổng thể những đối tượng người tiêu dùng đều có phương pháp ” toString “, nhưng nó sẽ không hiển thị trong hasOwnProperty.
— kennebec nguồn
2
hasOwnProperty là một hàm JavaScript thông thường nhận đối số là chuỗi .Trong trường hợp của bạn somevar. hasOwnProperty ( ” someProperty ” ), nó sẽ kiểm tra somevarhàm có someproperyhay không – nó trả về true và false .Nói

function somevar() { this.someProperty = “Generic”;}function welcomeMessage(){ var somevar1 = new somevar(); if(somevar1.hasOwnProperty(“name”)) { alert(somevar1.hasOwnProperty(“name”)); // It will return true }}
— Kunal Vashist nguồn
2
hasOwnPropertylà một cách thích hợp để kiểm tra một đối tượng có thuộc tính hay không. someVar.somePropertykhông thể được sử dụng như một giải pháp thay thế cho tình huống này. Điều kiện sau đây sẽ cho thấy một sự khác biệt tốt:

Xem thêm : Media publications là gì

const someVar = { isFirst : false } ; / / The condition is true, because ” someVar ” has property ” isFirst ” if ( someVar. hasOwnProperty ( ” isFirst ” ) ) { / / Code runs } / / The condition is false, because ” isFirst ” is false.if ( someVar. isFirst ) { / / Code does not runs here } Do đó someVar. isFirstkhông thể được sử dụng sửa chữa thay thế cho someVar. hasOwnProperty ( ” isFirst ” ).
— Rahmat Ali nguồn
-1
Cảnh A:

const objA = { a: 1, b: 2 }for (const key in objA) { if (objA.hasOwnProperty(key)) { console.log(objA) }} Output 1 2Cảnh B:const objB = { a: 1, b: 2, hasOwnProperty() { return false }}for (const key in objB) { if (objB.hasOwnProperty(key)) { console.log(objB) }} Outputs nothingVì JavaScript không bảo vệ thuộc tính của hasOwnProperty. Vì vậy, bạn có thể sử dụng nó như thế này:

for (const key in objB) { if (Object.prototype.hasOwnProperty.call(obj, key)) { console.log(objB) }}
— LeeKlaus nguồn
-2
Nó kiểm tra xem một đối tượng có thuộc tính hay không. Nó hoạt động giống như if(obj.prop), theo như tôi biết.

— visualidiot nguồn
7
obj.propsau chuỗi nguyên mẫu, hasOwnPropertykhông
— Kristoffer Sall-Storgaard
12
Vấn đề là khi nào propcó giá trị sai. if(obj.hasOwnProperty(“prop”))sẽ được truetrong khi if(obj.prop)sẽ được false.
— Rodrigo Saling
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.

ĐÁNH GIÁ post
Bài viết liên quan

Tư vấn miễn phí (24/7) 094 179 2255