ความแตกต่างระหว่างคุณสมบัติและทรัพย์สินคืออะไร? [ปิด]


162

สิ่งเหล่านี้ดูเหมือนจะหมายถึงสิ่งเดียวกัน แต่คำใดที่เหมาะสมกว่าในบริบทใด


4
คุณสามารถเฉพาะเจาะจงมากขึ้นเกี่ยวกับบริบทหรือไม่ ยกตัวอย่างเช่นคำหมายถึงสิ่งที่แตกต่างอย่างสิ้นเชิงภายในบริบท C #
David Arno

1
@David Arno - ไวยากรณ์ภาษาที่ต่างกันมีคำเดียวหรือทั้งสองคำ แต่ไม่ขึ้นอยู่กับไวยากรณ์ของภาษาใดภาษาหนึ่งมีความแตกต่างในความหมายหรือไม่ มันไม่ใช่คำถามที่ไม่ดี
Corey Trager

4
ฉันคิดว่ามันเป็นคำถามที่ไม่ดี การตรวจสอบอรรถาภิธานจะแสดงให้เห็นว่าพวกเขามีความหมายเหมือนกันในแง่ภาษาจริง แต่คอมพิวเตอร์และภาษาเมตาที่แตกต่างกันอาจกำหนดบทบาทที่แตกต่างกันมากและพวกเขาอาจไม่ตรงกันสำหรับภาษาคอมพิวเตอร์โดยเฉพาะ บริบทคือทุกสิ่ง
David Arno

9
ฉันมากกว่า .... เห็นใจ ฉันจำครั้งแรกที่ฉันได้ยินคำว่า "วิธี" อะไรคือ "วิธีการ" ห่า? โอ้มันเป็นสิ่งที่คุณเรียกฟังก์ชั่นเมื่อมันเป็นของชั้นเรียน ทำไมคำศัพท์ใหม่สำหรับสิ่งที่เก่า? ธ อโรกล่าวว่า "ระวังทุกองค์กรที่ต้องการเสื้อผ้าใหม่" (หรือคำ ... )
Corey Trager

1
คำถามนี้กว้างเกินไปโดยไม่ต้องให้บริบท (เท่าที่เขียนสามารถตอบได้จริงด้วยรายการของบริบทที่เป็นไปได้ทั้งหมด)
Quentin

คำตอบ:


199

โดยทั่วไปแล้ว (และในการใช้ภาษาอังกฤษทั่วไป) เงื่อนไขหมายถึงสิ่งเดียวกัน

ในบริบทที่เฉพาะเจาะจงของ HTML / Javascript คำศัพท์สับสนเนื่องจากการแสดง HTML ขององค์ประกอบ DOM มีแอตทริบิวต์ (นั่นคือคำที่ใช้ใน XML สำหรับคู่คีย์ / ค่าที่อยู่ภายในแท็ก) แต่เมื่อแสดงเป็นวัตถุ JavaScript แอตทริบิวต์เหล่านั้น ปรากฏเป็นวัตถุคุณสมบัติ

หากต้องการสับสนเพิ่มเติมการเปลี่ยนแปลงคุณสมบัติจะอัปเดตแอตทริบิวต์

ยกตัวอย่างเช่นการเปลี่ยนแปลงelement.href สถานที่ให้บริการจะปรับปรุงhref แอตทริบิวต์element.getAttribute('href')ในองค์ประกอบและที่จะสะท้อนให้เห็นในการเรียกไปยัง

อย่างไรก็ตามหากคุณอ่านคุณสมบัตินั้นในภายหลังคุณสมบัติดังกล่าวจะถูกทำให้เป็นมาตรฐานโดยสมบูรณ์แม้ว่าจะมีแอตทริบิวต์นั้นอาจเป็น URL ที่เกี่ยวข้อง!


14
นี่ควรเป็นคำตอบที่ยอมรับได้!
รูเบนส์ Mariuzzo

3
@RubensMariuzzo แต่อาจแม่นยำไม่มีคำตอบที่นี่ .. มันแค่อธิบายในจุดที่เป็นไปได้ของความสับสนสำหรับผู้คนที่ได้รับบริบท
Brett Caswell

@BrettCaswell ฉันคิดว่าในบริบท DOM (HTML / JS) คำตอบนี้จะอธิบายความแตกต่างอย่างชัดเจนและง่ายสำหรับฉัน
รูเบนส์ Mariuzzo

1
@Alnitak คำตอบที่ชัดเจน ฉันทำหนึ่งในศตวรรษสำหรับคุณ
mkHun

pythonผมมาจาก ฉันสามารถใช้คำศัพท์class attributeและinstance property?
Sarit

71

คำเหล่านี้มีอยู่ก่อนที่วิทยาศาสตร์คอมพิวเตอร์จะปรากฏขึ้น

  1. คุณสมบัติเป็นคุณภาพหรือวัตถุที่เราให้ความสำคัญกับใครบางคนหรือบางสิ่งบางอย่าง ตัวอย่างเช่นคทาเป็นคุณลักษณะของอำนาจและสถานะ

  2. สถานที่ให้บริการที่มีคุณภาพที่มีอยู่โดยไม่ต้องระบุแหล่งที่มาใดตัวอย่างเช่นดินเหนียวมีคุณสมบัติยึดเกาะ หรือหนึ่งในคุณสมบัติของโลหะคือการนำไฟฟ้า คุณสมบัติแสดงให้เห็นถึงตัวเองแม้ว่าปรากฏการณ์ทางกายภาพโดยไม่จำเป็นต้องให้พวกเขากับใครบางคน ในทำนองเดียวกันการบอกว่าใครบางคนมีคุณลักษณะที่เป็นชายก็เห็นได้ชัดในตัวเอง ในความเป็นจริงคุณสามารถพูดได้ว่าทรัพย์สินเป็นของใครบางคนหรือบางสิ่งบางอย่าง

เพื่อความเป็นธรรมแม้ว่าในวิทยาศาสตร์คอมพิวเตอร์คำสองคำนี้อย่างน้อยที่สุดก็สามารถใช้แทนกันได้ - แต่แล้วโปรแกรมเมอร์มักจะไม่จบปริญญาในวรรณคดีอังกฤษและไม่เขียนหรือสนใจหนังสือไวยากรณ์มากนัก :)


1
คุณใกล้ความหมายมากกว่าที่ฉันเข้าใจ แอตทริบิวต์คือ Type Describer ซึ่งจะอธิบายวัตถุเป็นสิ่งนอกบริบท (เช่น interpeter) .. นั่นคือมีบริบท แต่บริบทนั้นอาจเปลี่ยนได้เป็นอย่างดี ตัวอย่างเช่นหากต้องการใช้ HTML วัตถุประสงค์ทั้งหมดของความกว้างจะไม่มีฟังก์ชั่นหากคุณแยกวิเคราะห์เอกสารโดยไม่ต้องการแสดง / แสดงผลไปยังหน้าใด ๆ
Brett Caswell

ขอบคุณ! ฉันมาที่นี่เพื่อหาคำแนะนำว่าควรใช้คำใดเมื่อตั้งชื่อ ฉันไม่สนใจ (มาก) ถ้ามันถูกต้องในทางเทคนิคหรือไม่มันเป็นความแตกต่างที่มีประโยชน์จริงๆ
user1433150

1
นี่คือประเภทของคำตอบที่ฉันกำลังมองหาเช่นกัน ทำไมบริบทหรือสิ่งที่ผู้ดำเนินการด้านภาษาเฉพาะเรื่องตัดสินใจ พวกเขาอาจทำการตัดสินใจตามอำเภอใจหรือไม่มีการศึกษา ฉันต้องการที่จะทำการศึกษาและสิ่งนี้ทำให้ฉันมีเหตุผลที่เป็นรูปธรรมในการเลือกอย่างใดอย่างหนึ่ง นอกจากนี้ยังอาจอธิบายได้ว่าเหตุใดผู้ดำเนินการรายหนึ่งจึงเลือกใช้
bielawski

2
สิ่งที่ได้ผลสำหรับฉันคือการพิจารณาคุณสมบัติเป็นวัตถุประสงค์และคุณลักษณะเป็นแบบสัมพันธ์ / แบบอัตนัย คุณสมบัติเช่นสีรูปร่างคะแนนความเร็วลมอุณหภูมิ (98'F) และข้อเท็จจริงอื่น ๆ ที่วัดได้หรือทำให้คุณสมบัติที่ดี คุณสมบัติเช่นพื้นผิว ("อ่อน"), เงื่อนไข ("ลมแรง"), อุณหภูมิ ("ร้อน") และข้อความอื่น ๆ ที่ไม่อาจปฏิเสธได้จริงว่าเป็นคุณสมบัติที่ดีกว่า
Ivan

20

บ่อยครั้งที่มีการใช้แอตทริบิวต์เพื่ออธิบายกลไกหรือสิ่งต่าง ๆ ในโลกแห่งความเป็นจริง

คุณสมบัติใช้เพื่ออธิบายรูปแบบ

ตัวอย่างเช่นเอกสาร (นั่งอยู่บนโต๊ะทำงานของคุณ) อาจมีคุณลักษณะที่เป็นแบบร่าง

คลาสที่โมเดลเอกสารมีคุณสมบัติเพื่อระบุว่าเป็นแบบร่างหรือไม่ ในกรณีนี้คุณสมบัติจะบันทึกสถานะ


1
นั่นหมายความว่าคุณสมบัติของอินสแตนซ์เป็นคุณลักษณะหรือไม่
Abdurrahim

น่าสนใจ แต่ฉันไม่เชื่อเช่นนั้น รับเอกสารตัวอย่างของคุณลักษณะอาจเป็นกระดาษ อินสแตนซ์ของคุณสมบัติที่เป็นตัวแทนของโมเดลอาจเป็นบัฟเฟอร์ที่มีขนาดใหญ่พอกับเนื้อหาของกระดาษที่กล่าวมา
Walt Stoneburner

17

แอตทริบิวต์คือสิ่งที่คุณใช้จริงภายในแท็ก HTML เช่น

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

ในอินสแตนซ์นี้ประเภทและตรวจสอบเป็นคุณลักษณะ แม้ว่าคุณสมบัติคือค่าของแอตทริบิวต์เหล่านี้ซึ่งเบราว์เซอร์บันทึกอยู่ภายในองค์ประกอบ DOM บ่อยครั้งที่มูลค่าของคุณลักษณะและคุณสมบัติเท่ากันนั่นคือสิ่งที่ทำให้เกิดความสับสน

ในตัวอย่างนี้องค์ประกอบ DOM inputมีคุณสมบัติที่typeมีค่า"checkbox"และคุณสมบัติที่checkedมีค่าtrue(สังเกตว่าค่านี้แตกต่างจากค่าที่อยู่ในแอตทริบิวต์ HTML)

การใช้ Firebug คุณสามารถสังเกตพฤติกรรมของคุณสมบัติเมื่อคลิกที่องค์ประกอบและเลือก "มุมมอง DOM"


นี่อาจเป็นคำตอบที่ยอมรับได้ มันมีทั้งความชัดเจนในทางทฤษฎีและมีประโยชน์ในบริบท
Jaune

15

ความหมายที่แม่นยำของคำศัพท์เหล่านี้จะขึ้นอยู่กับภาษา / ระบบ / จักรวาลที่คุณกำลังพูดถึงมาก

ใน HTML / XML แอตทริบิวต์เป็นส่วนหนึ่งของแท็กที่มีเครื่องหมายเท่ากับและค่าและคุณสมบัติไม่ได้มีความหมายอะไรเลยตัวอย่างเช่น

ดังนั้นเราต้องการข้อมูลเพิ่มเติมเกี่ยวกับโดเมนที่คุณพูดคุย


7
สิ่งนี้ไม่ถูกต้อง ดูคำตอบของ Alnitak
kba

6

ในงูหลาม ...

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 )

สถานที่ให้บริการเป็นชื่อที่เหมือนแอตทริบิวต์เดียวที่ล้อมรอบคอลเลกชันของฟังก์ชัน setter, getter (และ deleter)

แอตทริบิวต์มักเป็นวัตถุเดียวภายในวัตถุอื่น

อย่างไรก็ตามการที่บอกว่า Python ให้วิธีการแบบ__getattr__ที่อนุญาตให้คุณขยายคำจำกัดความของ "attribute"

Bottom Line - พวกเขาเกือบจะเหมือนกัน Python สร้างความแตกต่างด้านเทคนิคในการใช้งาน


2

ใน Java (หรือภาษาอื่น ๆ ) การใช้คุณสมบัติ / คุณสมบัติขึ้นอยู่กับการใช้งาน:

  • คุณสมบัติที่ใช้เมื่อค่าไม่เปลี่ยนแปลงบ่อยนัก (มักใช้เมื่อเริ่มต้นหรือตัวแปรสภาพแวดล้อม)

  • คุณสมบัติเป็นค่า (วัตถุลูก) ขององค์ประกอบ (วัตถุ) ซึ่งสามารถเปลี่ยนแปลงได้บ่อย / ตลอดเวลาและเป็นหรือไม่ขัดขืน


2

ใน HTML ดูเหมือนว่าคุณลักษณะเฉพาะกับต้นไม้ DOM ในขณะที่คุณสมบัติใช้เพื่ออธิบายคุณสมบัติขององค์ประกอบ DOM


2

คุณสมบัติและคุณสมบัติแตกต่างกันอย่างไร
คุณสมบัติและฟังก์ชั่นแตกต่างกันอย่างไร? ความแตกต่างระหว่างลักษณะและตัวละครคืออะไร? พระราชบัญญัติและพฤติกรรมต่างกันอย่างไร

มันเป็นเพียงการเปลี่ยนแปลงในบริบท

วัตถุสินค้า, บุคลิกภาพบุคคล

บุคคลที่ทำหน้าที่ในพฤติกรรม บุคลิกภาพมีลักษณะของตัวละครที่กำหนด ผลิตภัณฑ์มีคุณสมบัติที่ได้มาจากการใช้งาน วัตถุมีคุณสมบัติที่ให้มันคุณสมบัติ


นั่นเป็นคำตอบที่ดีจริงๆ
anonym

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

จะเป็นวิธีหนึ่งในการดู

ใน C #

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

8
ขออภัยที่จะลงคะแนนนี้ แต่ใน XML สิ่งที่คุณระบุว่าเป็นสถานที่จริง "องค์ประกอบ"
Harald Scheirich

@HaraldScheirich ตอบกลับช้า;) แต่องค์ประกอบเรียกว่า "คุณสมบัติ" แน่นอนเพื่อให้ชัดเจนการเชื่อมต่อกับ Entity.Property ไม่ปกติที่องค์ประกอบ xml จะเรียกว่า "องค์ประกอบ" จริง
dove

1

Delphi ใช้คุณสมบัติและพวกเขาพบวิธีใน. NET (เพราะมีสถาปนิกเดียวกัน)

ใน Delphi มักใช้ร่วมกับข้อมูลชนิดรันไทม์ซึ่งตัวแก้ไขคุณสมบัติรวมสามารถใช้เพื่อตั้งค่าคุณสมบัติใน designtime

คุณสมบัติไม่เกี่ยวข้องกับฟิลด์เสมอไป พวกเขาอาจเป็นฟังก์ชั่นที่เป็นไปได้ที่จะมีผลข้างเคียง (แต่แน่นอนว่าเป็นการออกแบบที่แย่มาก)


ไม่จำเป็น. การตรวจสอบสกปรกอัตโนมัติบนวัตถุที่คงอยู่จะเป็นตัวอย่างของคุณสมบัติที่มีผลข้างเคียงซึ่งจะไม่เป็นการออกแบบที่ไม่ดี
Quibblesome
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.