- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
所以我一直在研究面向对象的完整开发 JavaScript 实践,并对以下示例感到好奇。
据我了解,(这对我来说很有意义)以下“ secret ”字段是“私有(private)”的:
var MyObject = function() {
var secret = 'sshhh';
this.getSecret() = function() {
return secret;
}
}
这是因为字段 secret 具有内部函数可以访问的函数范围,但外部没有任何内容......到目前为止一切顺利。
但我已经看到了以下内容(尤其是在 Douglas Crockford 的书中):
var MyObject = function() {
var secret = 'sshhh';
trở lại {
getSecret : function() {
return secret;
}
}
}();
想知道有什么区别,为什么更好?我知道在这种情况下,我们甚至不会返回私有(private)字段所在的同一个对象,但看不到巨大的好处,因为您无法通过任何一种方式直接访问该字段。
câu trả lời hay nhất
这些例子非常不同......第一个创建一个“MyObject”chức năng
,当使用mới
作为构造函数调用时,将有一个“getSecret”chức năng
作为一个属性;第二个创建一个“MyObject”Sự vật
,并将“getSecret”chức năng
作为属性。
在这方面,这有点像静态方法和公共(public)方法之间的区别。在第一种情况下,该方法仅在调用构造函数时存在,而不存在于构造函数本身中。在第二种情况下,没有构造函数。
假设您有:
var MyObject1 = function() {
var secret = 'sshhh';
this.getSecret = function() {
return secret;
}
}
// ...
var MyObject2 = function() {
var secret = 'sshhh';
trở lại {
getSecret : function() {
return secret;
}
}
}();
运行一些测试:
MyObject1.getSecret();
// TypeError: Object has no method 'getSecret'
var m1 = new MyObject1();
m1.getSecret();
// "sshhh"
MyObject2.getSecret();
// "sshhh"
var m2 = new MyObject2();
// TypeError: object is not a function
所以 MyObject1 就像一个类,而 MyObject2 就像一个静态类。
关于JavaScript 封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3348504/
Tôi cần in 3 biến bằng cách sử dụng tính năng đóng gói và lớp chính không thể sửa đổi được. Lớp chính khai báo các biến [xi lanh, nhà sản xuất, chủ sở hữu] và muốn tạo và in một đối tượng với các tham số sau: System.out.println (Xe mới (hình trụ)
Tôi đang viết cuốn sách "Bắt đầu về Ruby" và mọi thứ đều diễn ra tốt đẹp cho đến khi tôi đóng gói. Tôi hiểu mã này đang làm gì, tôi chỉ không biết tại sao nó lại được đặt bằng các phương thức này. Đối với những người quan tâm đây là lin
Vì vậy, tôi đã xem xét đầy đủ các phương pháp thực hành JavaScript hướng đối tượng và tò mò về ví dụ sau. Theo như tôi hiểu (và điều này có ý nghĩa với tôi) các trường " bí mật " sau đây là "riêng tư": var MyObj
Trong các phương pháp lập trình hướng đối tượng, đóng gói (tiếng Anh: Encapsulation) đề cập đến một phương pháp đóng gói một phần và ẩn các chi tiết triển khai của một giao diện chức năng trừu tượng. Đóng gói có thể được coi như một hàng rào bảo vệ ngăn chặn mã và dữ liệu của lớp bị xâm phạm.
Đóng gói được định nghĩa là bao bọc một hoặc nhiều mục trong một gói vật lý hoặc logic. Trong phương pháp lập trình hướng đối tượng, tính đóng gói được sử dụng để ngăn chặn việc truy cập vào các chi tiết triển khai. Trừu tượng hóa và đóng gói là những tính năng có liên quan của lập trình hướng đối tượng. Tính trừu tượng cho phép thông tin liên quan được
Hôm nay tôi đọc một cuốn sách và tác giả viết rằng trong một lớp được thiết kế tốt, cách duy nhất để truy cập một thuộc tính là thông qua một trong các phương thức của lớp. Đây có phải là một ý tưởng được chấp nhận rộng rãi? Tại sao các thuộc tính được đóng gói lại quan trọng như vậy? Hậu quả của việc không làm là gì? Tôi đã đọc ở đâu đó trước đó rằng điều này có thể cải thiện tính bảo mật hoặc lớp học
Hôm nay tôi có một cuộc phỏng vấn cho vị trí kỹ sư phần mềm. Tôi đã đọc rất nhiều về các cuộc phỏng vấn từ stackoverflow. Họ hỏi tôi về những tình huống thông thường liên quan đến OOP. Nhưng họ cũng hỏi tôi những điều này: Có thể đóng gói mà không cần kế thừa không? Bạn có thể hút thuốc mà không cần thừa kế
Tôi đang tạo một trang web đơn giản và đã viết một tập lệnh xây dựng lớp sẽ thực hiện những việc như tìm lỗi mã nguồn và thu nhỏ css/html/js. Ở giai đoạn này tôi vừa hoàn thành CSS đang hoạt động nhưng chỉ có định dạng phi cấu trúc ban đầu
Trang trình bày bên dưới đề cập đến ngôn ngữ C++, trong đó có nội dung "đóng gói nhằm đảm bảo người dùng sử dụng ADT của chúng tôi một cách an toàn" Tuy nhiên, nếu anh ta có quyền truy cập vào tôi
Đang cố gắng thiết lập một lớp Người Tôi gặp khó khăn khi cố gắng đóng gói thông tin trong một lớp để nó không bị thay đổi một cách vô tình. Lớp này hoạt động hoàn hảo ngoại trừ khi tôi cố gắng sử dụng setter/getters để đóng gói. Tôi nghĩ vấn đề là các phương thức này cuối cùng lại lặp lại với nhau
Khái niệm hướng đối tượng: Đóng gói, trừu tượng hóa dữ liệu và ẩn dữ liệu là 3 khái niệm khác nhau nhưng rất liên quan với nhau. Vì vậy, thật khó để tôi hiểu đầy đủ các khái niệm khi đọc thông tin trên internet. Thông tin có sẵn ở một nơi mâu thuẫn với thông tin có sẵn ở một nơi khác trên Internet. Ai đó có thể hướng dẫn tôi đọc được không
Tôi bị mắc kẹt với việc đóng gói. Có vẻ như tôi đã làm mọi thứ theo quy định nhưng vẫn không được. Mặc dù tôi biết tôi đang thiếu một cái gì đó. Tôi đang sử dụng Eclipse. Tôi muốn thực hành và thử những điều mới mà tôi đã học được bằng cách tạo ra một bộ bài tiêu chuẩn gồm 52 lá bài
Trong java, để lấy tất cả các key trong bản đồ, chúng ta có thể sử dụng phương thức keySet. Nhưng tôi muốn biết tại sao tên phương thức không chỉ là khóa? Tên Set có tiết lộ chi tiết về việc triển khai không? Theo tôi hiểu thì Java là ngôn ngữ được gõ tĩnh và tên này bao gồm
Tôi đang cố gắng tìm ra cách ngăn không cho các biến trang trong ứng dụng của tôi được xác định trên toàn cầu. Tôi đã nghĩ ra một số phương pháp nhưng tôi muốn biết liệu có phương pháp tiêu chuẩn chung nào mà mọi người sử dụng hay không. Tôi đã lấy mẫu thiết kế plugin của mình bằng phương pháp này: http://www.virgentech.co
Tôi có một kết nối tcp mà tôi muốn tiếp tục mở trong phương thức HandleConnectionAsync của lớp máy chủ. Nó sẽ nhận được cập nhật liên tục từ khách hàng. khoảng trống không đồng bộ riêng tư HandleConnecti
Đây là một mẫu nhỏ về lớp của tôi: #include #include sử dụng std::string; sử dụng std::vector struct Book { string;
Tôi muốn mã như: class Foo{ public: void update() { for( auto dataModifier : _dataModifierLis
Điều này đã làm tôi khó chịu trong một thời gian, vì vậy tôi đã hỏi một đồng nghiệp xem anh ấy có thể tìm ra nó không, và tôi ở đây;) Tại sao có thể truy cập các thành viên riêng tư của lớp nắm giữ trong PropertyChangedCallback phụ thuộc vào thuộc tính? hãy để tôi chuyển cái này
Tôi biết đóng gói có nghĩa là một đối tượng không được có quyền truy cập trực tiếp vào các thành viên của các đối tượng khác nhau... nhưng tôi đoán nó có liên quan gì đến các trường công cộng? Tôi cho rằng các phương thức công khai không phá vỡ sự đóng gói ..? Tôi chỉ không rõ ràng ở đây và sẽ rất vui khi nhận được bất kỳ lời giải thích nào. câu trả lời hay nhất
Tôi sẽ không nói những điều vô nghĩa nữa. Chúng ta hãy nhìn vào mã ~ 1
Tôi là một lập trình viên xuất sắc, rất giỏi!