Logically, as you said before, a ring around a command should return "Reporter" but this not the case.
I've just tested it.
This block
OOP-Demo script pic (1)
returns true.
And this one,
OOP-Demo script pic
returns false

Yes(What language are you using?)(


Maybe that block is checking the block type,not the object type.If that's right,then it has a bug.But that is wrong.(sprite,costume are object types)
If that block is checking the block type,please make a block that checks the object type.

In the manual, the "object" is custom created "procedurally". A kind of emulation of "Object-Oriented Programming" and not using Snap objects.
The logic of the program in the manual is that the "simili-object" starts as a list, so it doesn't respond to "messages". But, when it is cloned, it is "reported" as a chunk of block commands in a ring, and no more a list. To test this case, we need checking if it is a reporter block or not.
And, as you discovered it, the test is false when we check against reporter block, but true when against command block.

Rings are how you get the block itself as a value, not the result of running them.
The is _ a _ block detects the type of block that is ringified.

Wait... scripts (command blocks) can be turned into "reporters" with the report block, even if it isn't in the definition of reporter blocks. Commands that report things: are they commands or reporters? I see the problem now.

Yes, exactly. The terminology is ambiguous.

I can use new List([]) to generate lists.Can I use new Object({type:null}) to generate objs?

That'll make a JS object. Nothing in Snap! corresponds exactly with JS objects. Snap! objects are all of particular types: sprite, costume, sound. (And only sprites have inheritance.) This is why the IS_A_? block doesn't have an "object" option, but rather the three object types we know about.

You could, of course, write an interface to JS objects through Snap! blocks using JSFunction. You'd have to write blocks for getting and setting fields, for defining methods, and so on -- much like the prototyping OOP implementation in the manual.

OK... :sweat:

You can use my Objection project.

Yes...But why is there blocks like this:"<extendable?>"?

It is a method of the Object constructor.

oh...not usful

Do you know about constructors in JavaScript?

Yes!But its still unuseful.

You dont have to implement everything...

Oh,Use new SpriteMorph() :crazy_face:

use the type of block in dev mode