Sự khác biệt giữa thuộc tính và tài sản là gì? [đóng cửa]


162

Những điều này dường như có nghĩa là điều tương tự. Nhưng thuật ngữ nào là phù hợp hơn trong bối cảnh nào?


4
Bạn có thể cụ thể hơn về bối cảnh? Ví dụ, các thuật ngữ có nghĩa là những thứ hoàn toàn khác nhau trong bối cảnh C #.
David Arno

1
@David Arno - các cú pháp ngôn ngữ khác nhau đã chiếm đoạt một hoặc cả hai từ nhưng độc lập với cú pháp của một ngôn ngữ cụ thể, có sự khác biệt về nghĩa không? Đó không phải là một câu hỏi tồi.
Corey Trager

4
Tôi nghĩ đó là một câu hỏi tồi. Việc kiểm tra từ điển đồng nghĩa sẽ cho thấy rằng chúng đồng nghĩa với ngôn ngữ thực, nhưng các ngôn ngữ máy tính và meta khác nhau có thể gán cho chúng các vai trò khá khác nhau và do đó chúng có thể không đồng nghĩa với một ngôn ngữ máy tính cụ thể. Vì vậy, bối cảnh là tất cả.
David Arno

9
Tôi hơn .... thông cảm. Tôi nhớ lần đầu tiên tôi nghe cụm từ "phương pháp". "Phương pháp" là cái quái gì vậy? Ồ, đó là những gì bạn gọi là hàm khi nó thuộc về một lớp. Tại sao thuật ngữ mới cho một cái gì đó cũ? Thoreau nói, "hãy cẩn thận với tất cả các doanh nghiệp yêu cầu quần áo mới". (hoặc từ ...)
Corey Trager

1
Câu hỏi này quá rộng mà không cung cấp một số ngữ cảnh (như được viết nó chỉ có thể thực sự được trả lời với một danh sách tất cả các bối cảnh có thể).
Quentin

Câu trả lời:


199

Nói chung (và trong cách sử dụng tiếng Anh thông thường) các thuật ngữ có nghĩa tương tự.

Trong ngữ cảnh cụ thể của HTML / Javascript, các thuật ngữ bị lẫn lộn vì biểu diễn HTML của phần tử DOM có các thuộc tính (là thuật ngữ được sử dụng trong XML cho các cặp khóa / giá trị có trong thẻ) nhưng khi được biểu thị dưới dạng đối tượng JavaScript thì các thuộc tính đó xuất hiện như thuộc tính đối tượng .

Để gây nhầm lẫn hơn nữa, các thay đổi đối với các thuộc tính thường sẽ cập nhật các thuộc tính.

Ví dụ: thay đổi thuộc element.href tính sẽ cập nhật href thuộc tính trên thành phần và điều đó sẽ được phản ánh trong lệnh gọi tới element.getAttribute('href').

Tuy nhiên, nếu sau đó bạn đọc thuộc tính đó, nó sẽ được chuẩn hóa thành một URL tuyệt đối, mặc dù thuộc tính có thể là một URL tương đối!


14
Đây phải là câu trả lời được chấp nhận!
Rubens Mariuzzo

3
@RubensMariuzzo, tuy nhiên có thể chính xác, không có câu trả lời nào ở đây .. nó chỉ giải thích về một điểm có thể gây nhầm lẫn cho mọi người, với bối cảnh.
Brett Caswell

@BrettCaswell, tôi nghĩ trong ngữ cảnh DOM (HTML / JS) câu trả lời này giải thích sự khác biệt rõ ràng và đơn giản với tôi.
Rubens Mariuzzo

1
@Alnitak Xóa câu trả lời. Tôi đã làm một trong những thế kỷ cho bạn.
mkHun

Tôi đến từ python. Tôi có thể sử dụng thuật ngữ class attributeinstance property?
Sarit

70

Những từ này tồn tại cách trước khi Khoa học Máy tính xuất hiện.

  1. Thuộc tính là một chất lượng hoặc đối tượng mà chúng ta gán cho ai đó hoặc thứ gì đó. Ví dụ, quyền trượng là một thuộc tính của quyền lực và trạng thái.

  2. Tài sản là một chất lượng tồn tại mà không có sự ghi nhận . Ví dụ, đất sét có chất lượng kết dính; hoặc, một trong những tính chất của kim loại là tính dẫn điện. Các thuộc tính thể hiện bản thân mặc dù hiện tượng vật lý mà không cần thuộc tính chúng cho ai đó hoặc một cái gì đó. Tương tự như vậy, nói rằng ai đó có thuộc tính nam tính là hiển nhiên. Trong thực tế, bạn có thể nói rằng một tài sản thuộc sở hữu của ai đó hoặc một cái gì đó.

Mặc dù công bằng mà nói, trong Khoa học máy tính, hai từ này, ít nhất là phần lớn, có thể được sử dụng thay thế cho nhau - nhưng sau đó, các lập trình viên thường không giữ bằng cấp về Văn học Anh và không viết hoặc quan tâm nhiều đến sách ngữ pháp :).


1
Bạn gần với ý nghĩa như tôi hiểu nó là. Một thuộc tính là Type Descacker, nó mô tả đối tượng đến một thứ gì đó ngoài ngữ cảnh (như một interpeter) .. nghĩa là có một bối cảnh, nhưng bối cảnh đó rất có thể thay thế cho nhau. Ví dụ, để sử dụng HTML, toàn bộ mục đích của chiều rộng không có chức năng nếu phân tích tài liệu của bạn mà không có ý định hiển thị / hiển thị nó cho một trang.
Brett Caswell

Cảm ơn bạn! Tôi đến đây để tìm hướng dẫn về thời điểm sử dụng thuật ngữ nào khi đặt tên. Tôi thậm chí không quan tâm (nhiều) nếu điều này đúng về mặt kỹ thuật hay không, đó là một sự khác biệt thực sự hữu ích.
dùng1433150

1
Đây là loại câu trả lời tôi đang tìm kiếm quá. Tại sao bối cảnh hoặc những gì bất kỳ người thực hiện ngôn ngữ cụ thể quyết định vấn đề. Họ có thể đã đưa ra một quyết định độc đoán hoặc vô học. Tôi muốn làm một cái có học thức và điều này cho tôi những lý do cụ thể để chọn cái này hơn cái kia. Nó cũng có thể làm rõ lý do tại sao một người thực hiện cụ thể đã lựa chọn của họ.
bielawski

2
Điều làm việc cho tôi là coi các thuộc tính là khách quan và thuộc tính là tương đối / chủ quan. Các tính năng như màu sắc, hình dạng, điểm số, tốc độ gió, nhiệt độ (98'F) và các sự kiện khách quan hoặc có thể đo lường khác làm cho Thuộc tính tốt. Các tính năng như kết cấu ("mềm"), điều kiện ("gió"), nhiệt độ ("nóng") và các tuyên bố khác không thể phủ nhận là đúng cho các thuộc tính tốt hơn.
Ivan

20

Thông thường một thuộc tính được sử dụng để mô tả cơ chế hoặc vật trong thế giới thực.

Một thuộc tính được sử dụng để mô tả mô hình.

Chẳng hạn, một tài liệu (ngồi trên bàn của bạn) có thể có thuộc tính rằng nó là bản nháp.

Lớp mô hình hóa các tài liệu có một thuộc tính để cho biết đó có phải là bản nháp hay không. Trong trường hợp này tài sản nắm bắt nhà nước.


1
Điều đó có nghĩa là, thuộc tính của một thể hiện là thuộc tính?
Abdurrahim

Hấp dẫn, nhưng tôi không tin như vậy. Đưa ra một tài liệu, một thể hiện của một thuộc tính có thể là một mảnh giấy; một thể hiện của thuộc tính đại diện của mô hình có thể là một bộ đệm đủ lớn với nội dung của bài báo nói trên.
Walt Stoneburner

17

Một thuộc tính là thứ thực tế mà bạn sử dụng trong thẻ HTML của mình như

<input type="checkbox" checked="checked" />

Trong trường hợp này loại và kiểm tra là thuộc tính. Thuộc tính mặc dù là giá trị của các thuộc tính này, mà trình duyệt lưu bên trong phần tử DOM. Thông thường giá trị của các thuộc tính và thuộc tính là bằng nhau, đó là những gì làm cho nó rất khó hiểu.

Trong ví dụ này, phần tử DOM inputcó thuộc tính typevới giá trị "checkbox"và thuộc tính checkedcó giá trị true(chú ý giá trị này khác với giá trị bên trong thuộc tính HTML).

Sử dụng Fireorms, bạn có thể quan sát hành vi của các thuộc tính khi nhấp vào một phần tử và chọn "Chế độ xem DOM".


Đây có thể là câu trả lời được chấp nhận. Nó là cả rõ ràng trong lý thuyết và hữu ích trong bối cảnh.
Jaune

15

Ý nghĩa chính xác của các thuật ngữ này sẽ phụ thuộc rất nhiều vào ngôn ngữ / hệ thống / vũ trụ mà bạn đang nói đến.

Trong HTML / XML, một thuộc tính là một phần của thẻ có dấu bằng và giá trị và thuộc tính không có nghĩa gì cả, chẳng hạn.

Vì vậy, chúng tôi cần thêm thông tin về lĩnh vực bạn đang thảo luận.


7
Điều này LAF không đúng. Xem câu trả lời của Alnitak.
kba

6

Trong Python ...

class X( object ):
    def __init__( self ):
        self.attribute
    def getAttr( self ):
        return self.attribute
    def setAttr( self, value ):
        self.attribute= value
    property_name= property( getAttr, setAttr )

Một thuộc tính là một tên giống như thuộc tính duy nhất bao bọc một tập hợp các hàm setter, getter (và deleter).

Một thuộc tính thường là một đối tượng trong một đối tượng khác.

Tuy nhiên, đã nói rằng Python cung cấp cho bạn các phương thức như __getattr__cho phép bạn mở rộng định nghĩa về "thuộc tính".

Tóm lại - chúng gần như đồng nghĩa. Python tạo ra sự khác biệt về kỹ thuật trong cách chúng được thực hiện.


2

Trong Java (hoặc các ngôn ngữ khác), sử dụng Thuộc tính / Thuộc tính tùy thuộc vào cách sử dụng:

  • Thuộc tính được sử dụng khi giá trị không thay đổi rất thường xuyên (thường được sử dụng khi khởi động hoặc cho biến môi trường)

  • Các thuộc tính là một giá trị (đối tượng con) của một phần tử (đối tượng) có thể thay đổi rất thường xuyên / mọi lúc và tồn tại hoặc không tồn tại


2

Trong HTML, dường như các thuộc tính dành riêng cho cây DOM trong khi các thuộc tính được sử dụng để mô tả các đặc điểm của các thành phần DOM


2

Sự khác biệt giữa Thuộc tính và Tài sản là gì?
Sự khác biệt giữa tính năng và chức năng là gì? Sự khác biệt giữa đặc điểm và tính cách là gì? Sự khác biệt giữa Đạo luật và Hành vi là gì?

Nó chỉ là một sự thay đổi trong bối cảnh.

Đối tượng, sản phẩm, tính cách, con người

Một người hành vi trong một hành vi. Một tính cách có đặc điểm của một nhân vật nhất định. Một sản phẩm có tính năng dẫn xuất Chức năng. Một đối tượng có các thuộc tính cung cấp cho nó Thuộc tính.


Đó thực sự là một câu trả lời tốt.
ẩn danh

1
<property attribute="attributeValue">proopertyValue</property>

sẽ là một cách để nhìn vào nó.

Trong C #

[Attribute]
public class Entity
{
    private int Property{get; set;};

8
Xin lỗi để bỏ phiếu này nhưng trong XML những gì bạn gắn nhãn một tài sản thực tế là một "yếu tố"
Harald Scheirich

@HaraldScheirich trả lời chậm;) nhưng phần tử thực sự được gọi là "thuộc tính" để làm rõ kết nối với Entity.Property. Nó không phải là bình thường đối với các yếu tố xml để thực sự được gọi là "yếu tố"
chim bồ câu

1

Delphi đã sử dụng các thuộc tính và họ đã tìm thấy đường vào .NET (vì nó có cùng kiến ​​trúc sư).

Trong Delphi, chúng thường được sử dụng kết hợp với thông tin loại thời gian chạy sao cho trình soạn thảo thuộc tính tích hợp có thể được sử dụng để đặt thuộc tính theo thời gian.

Các thuộc tính không phải lúc nào cũng liên quan đến các lĩnh vực. Chúng có thể là các chức năng có thể có tác dụng phụ (nhưng tất nhiên đó là thiết kế rất xấu).


Không cần thiết. Kiểm tra bẩn tự động trên một đối tượng liên tục sẽ là một ví dụ về một tài sản có tác dụng phụ sẽ không phải là thiết kế xấu.
Quibbledome
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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.