2011-12-28 20 views
5

Nói cách khác, phplà "->" trong php tương tự (a.k.a tương đương) thành "." trong javascript?

$object->method(); 

$object->property = 'someValue'; 

tương đương với, js:

$object.method(); 

$object.property = 'someValue'; 

Tôi tò mò, hoặc là sự hiểu biết php và js của tôi sai lầm?

+0

Nó tương tự, có. Nhưng JS không có các lớp như PHP. – powerbuoy

+0

NB: '->' được gọi là "toán tử mũi tên", và 'op' được gọi là" ký hiệu chấm "(trái với" ký hiệu khung ":' o [s] ', trong đó' s == 'p''). Tôi không tin rằng có một tên chính thức cho '.' trong JS, mặc dù bạn có thể gọi nó là" nhà điều hành chấm "và được hiểu. Sử dụng '->', '.' hoặc' [] '(trong ngôn ngữ thích hợp) được gọi là" truy cập thuộc tính "hoặc" truy cập thành viên "(thuật ngữ cũ trong PHP thường bị hạn chế để chỉ các trường đối tượng truy cập, chứ không phải là các phương thức). – outis

Trả lời

9

Tương tự và khác biệt.

Một lớn - nhưng không độc quyền! - Sự khác biệt là, trong PHP, các phương thức là ràng buộc đối với một thể hiện của một lớp, trong khi trong JavaScript, các phương thức chỉ là các hàm (là giá trị hạng nhất) xảy ra được đặt tên theo ("được lưu trữ trong ") thuộc tính của đối tượng.

Vì phương thức PHP là bị ràng buộc đối với phiên bản của lớp, điều này có nghĩa là bên trong không thay đổi tùy thuộc vào cách phương thức được gọi.

Trong JavaScript, tuy nhiên, object.member(...) tương đương với object["member"].call(object, ...): các this bên trong phương thức JavaScript là hoàn toàn phụ thuộc vào cách hàm được gọi. (Đây là lý do tại sao gọi lại trong JavaScript đôi khi yêu cầu đóng cửa để vượt qua this thông qua chính xác.)

Khi bạn tiếp tục tìm hiểu/sử dụng cả hai ngôn ngữ (và hy vọng các ngôn ngữ khác nhau hoàn toàn!), Bạn sẽ có thể thấy nhiều điểm tương đồng và khác biệt trong cả hai khác biệt thiết kế cơ bản và cú pháp. Học cách "tôn trọng" một ngôn ngữ, cho nó là gì và nó hoạt động như thế nào, là một cách tốt để kết bạn với nó.

Mã hóa vui vẻ.

+2

Đã lâu rồi tôi mới đọc câu trả lời của bạn, nhưng tôi vui vì tôi đã làm lại. Nhìn lại một thời gian sau đó, nó thực sự là một cái gì đó. Lúc đó, tôi chỉ đang tìm câu trả lời đúng. Nhưng bây giờ tôi thấy đoạn cuối của bạn khá đầy cảm hứng. Tôi không biết bạn là ai, nhưng bạn chỉ lấy cảm hứng từ ai đó (tôi). – user000001

+0

@ user744184 Điều đó làm cho tôi mỉm cười để đọc, và, như mọi khi, hạnh phúc mã hóa :) –

4

Khá nhiều, cả hai đều cho phép bạn truy cập các thuộc tính và phương thức trên đối tượng.

Hãy nhớ rằng JavaScript có một hệ thống đối tượng hoàn toàn khác với lớp không có trong hộp.

+0

… và mãi mãi sau đó. Amen. – kojiro

-1

Trước hết, PHP là phía máy chủ trong khi Javascript là phía máy khách. Vì vậy, quyết định bên nào bạn muốn các phương pháp hoặc biến của bạn sẽ hoạt động?

Hãy đến với Câu hỏi cốt lõi của bạn: "là‘->’trong php tương tự như‘’trong javascript?"

Câu trả lời là Không. Bởi vì trong PHP, bạn phải thực hiện một đối tượng của một lớp. đầu tiên & thì bạn có thể sử dụng đối tượng đó. Trong khi ở JS (JavaScript) thì không cần Class.

Sử dụng cả PHP và JS theo cách phù hợp có thể giúp bạn rất nhiều để tạo một trang web đẹp ...

+0

Không phải là một câu trả lời hữu ích. Câu hỏi đặt ra là về ngữ nghĩa, không phải là nơi lập trình nên được sử dụng (máy chủ hoặc phía máy khách). Hơn nữa, JavaScript có thể được sử dụng phía máy chủ (xem Node.js ví dụ). Cuối cùng, tôi tin rằng hai ký hiệu mà OP đề cập trên thực tế khá giống nhau, theo câu trả lời của pst. – NobRuked

1

Câu hỏi của bạn là "họ là tương tự" - câu trả lời là "có".

Các sắc thái của thừa kế nguyên mẫu hoặc cổ điển là thú vị, chắc chắn, nhưng với mục đích của bạn (đặc biệt nếu bạn đang ở điểm hỏi câu hỏi này), bạn nên tiến hành như thể chúng tương đương. Tận hưởng thế giới của Javascript, rất nhiều niềm vui. Khi bạn đã sẵn sàng đặt thêm câu hỏi, hãy đọc số comparison with class-based models và tận hưởng sắc thái!

Các vấn đề liên quan