 
			
				24.02.2010, 23:55
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.02.2010 
					
					
					
						Сообщений: 27
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Как различить методы и свойства?
			 
			
		
		
		
		Друзья! Как вы их различаете? Синтаксис ведь один! Вот например: 
window.close это метод 
window.location это свойство 
ДОлжны быть какие-то тонкости, скрытые от глаз начинающих.
 
Очень странно. 
А ещё моё непонимание тем усугубляется, что захожу по этой ссылке
 http://javascript.ru/window.location
и вижу, что location это объект. Короче, у меня голова кругом идёт. Я сюда пришёл с С, там как-то попроще было. 
 
(Был класс, были переменные типа <имя класса> и к этим переменным применялись функции, в классе определённые- суть методы. НУ и потом детали всякие. Может, и громоздче, но однозначно, то есть функция суть таковая и ничего более, а тут location и объект и свойство... бр...) ПОмогите пожалуйста разобраться. Спасибо.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.02.2010, 00:05
			
			
			
		  
	 | 
 
	
		
		
		
			
			
			
				
				
				
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.07.2008 
					
					
					
						Сообщений: 3,873
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		А что странного в том, что свойство может быть ссылкой на объект? Кроме свойств и методов есть еще сеттеры и геттеры    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.02.2010, 00:12
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.02.2010 
					
					
					
						Сообщений: 27
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Мне знаете, ли не до шуток. Я и так Вам верю, что Вы много знаете, могли бы не писать ерудны, не тратит своё и моё время, если по какой-то причине не хотите помочь. Извините. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.02.2010, 00:18
			
			
			
		  
	 | 
 
	
		
		
		
			
			
			
				
				
				
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.07.2008 
					
					
					
						Сообщений: 3,873
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		В JavaScript у объекта только свойства и могут быть (если не считать сеттеров и геттеров), а метод — это просто ссылка на объект, который является функцией    
Ну проверить тип, можно, например, так:
 
var obj = {
    property1: true,
    property2: {
        otherObjectProperty: 100,
    },
    property3: function () {
        return;
    }
};
alert([
    "obj.property1 is " + typeof obj.property1,
    "obj.property2 is " + typeof obj.property2,
    "obj.property3 is " + typeof obj.property3
].join("\n"));
	
 
	| 
		
			Сообщение от возжаждавший
			
		
	 | 
 
	| 
		 не писать ерудны
	 | 
 
	
 
 а где я ерунду написал?
 
	
 
	| 
		
			Сообщение от возжаждавший
			
		
	 | 
 
	| 
		не тратит своё и моё время
	 | 
 
	
 
 за мое время переживать не стоит    
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Octane, 25.02.2010 в 00:24.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.02.2010, 00:37
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.02.2010 
					
					
					
						Сообщений: 27
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 А различаете вы их как? 
Ну с windows, думаю всё понятно. Тут все свойства и методы от зубов отскакивать должны. Но, наверное, есть же какие-то малоизвестные свойства и методы? Ну и потом могут новые прибавляться разработчиками. Или надо все запоминать? 
 
С типами понятно, спасибо. Но вот тот же join, допустим. Я ткнул в справочник, посмотрел, для чего он нужен. Но вот что он такое- метод или свойство так и не понял, а в справочнике не написано. Ну раз он имеет аргументы, наверное метод. Неохота гадать, показывать невежество. Должно быть какое-то различие в синтаксисе, да ведь? Скобки () присутствуют не всегда. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.02.2010, 00:49
			
			
			
		  
	 | 
 
	
		
		
		
			
			
			
				
				
				
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.07.2008 
					
					
					
						Сообщений: 3,873
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Зачем какие-то различия в синтаксисе, если у объекта могут быть только свойства? Методом, называют свойство объекта, являющееся ссылкой на функцию, потому что так привычнее, такая терминология используется в других языках, но от этого какой-то другой конструкцией в JavaScript оно не становится. 
var obj = {};
obj.abc = function () {}; // здесь obj.abc — метод
obj.abc = 1; // а тут уже obj.abc — свойство
Какое может быть различие в доступе к свойствам при условии, что это свойство может быть динамически изменено?  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Octane, 25.02.2010 в 01:22.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.02.2010, 01:09
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.02.2010 
					
					
					
						Сообщений: 27
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Попробую разобраться, спасибо. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.02.2010, 01:12
			
			
			
		  
	 | 
 
	
		
		
		
			
			
			
				
				
				
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.07.2008 
					
					
					
						Сообщений: 3,873
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Еще есть сеттеры и геттеры, но механизм их создания доступен JS-программисту не во всех браузерах: 
var obj = {
    x: 1
};
obj.__defineSetter__("propertyX", function (a) {
    this.x = a;
});
obj.__defineGetter__("propertyX", function () {
    return this.x + 1;
});
obj.propertyX = 2;
alert(obj.x);
alert(obj.propertyX);
Так же, возможно, реализованы и window.location, и document.body.innerHTML.
 
Хотя, сами эти сеттеры и геттеры, наверное, тоже свойства, но с определенной пометкой и обработчиками, тут я не знаю, как оно внутри работает, могу только догадываться.  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Octane, 25.02.2010 в 16:06.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.02.2010, 01:39
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Интересующийся 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 24.02.2010 
					
					
					
						Сообщений: 27
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		А что такое свойство? 
Длина это свойство, ширина свойство, цвет тоже свойство.
 
А вот это что? 
var obj = {}; 
obj.abc = 1; // а тут уже obj.abc — свойство
 
Ну то есть я увидел создание объекта obj (Какого типа? Или это напрасный вопрос- следствие языка С?)
 
Но вот дальше вообще не понимаю ничё. Как может единица быть свойством? Чё-то вообще не пойму.
 
Ну а потом отсюда вот взял
 http://www.spravkaweb.ru/javascript/...operty#anchors
var anchorCount=document.anchors.length 
Как прочесть? ЕСть объект document, который обладает свойством anchors, которое В СВОЮ ОЧЕРЕДЬ также обладает свойством lenght? ПОлучается, у свойства есть свойство?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				25.02.2010, 01:55
			
			
			
		  
	 | 
 
	
		
		
		
			
			
			
				
				
				
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.07.2008 
					
					
					
						Сообщений: 3,873
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от возжаждавший
			
		
	 | 
 
	| 
		Какого типа?
	 | 
 
	
 
 типа Object   
	
 
	| 
		
			Сообщение от возжаждавший
			
		
	 | 
 
	| 
		Как может единица быть свойством?
	 | 
 
	
 
 obj — объект 
abc — свойство объекта obj 
1 — значение свойства abc
 
Значением свойства может быть не только примитив (число, строка и т.д.), но и ссылка (Reference) на другой объект, функцию, массив.
 
	
 
	| 
		
			Сообщение от возжаждавший
			
		
	 | 
 
	
		var anchorCount=document.anchors.length 
Как прочесть?
	 | 
 
	
 
 У объекта document есть свойство anchors, значением которого является ссылкой на массив. У этого массива есть свойство length.
 
Читайте статьи на этом сайте или для глубокого понимания  Тонкости ECMAScript. Дальше теорию  рассказывать не охото.  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Octane, 25.02.2010 в 16:00.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |